js的数据类型有哪些?
这是一个很基础的面试题。一般一到两年工作经验的人的岗位会问到这个东西。
很多人不以为然,不就是 number,string,bool,undefined,null,object吗?
草率啦,几年前的回答没错,现在呢?其实es6新增了一种数据类型 Symbol。
Symbol。指的是独一无二的值。每个通过 Symbol() 生成的值都是唯一的
所以你答出来symbol才算正确的。
但是到这里并不算完,这个题除了考察基础外,还有一层意思,就是看你会不会去主动了解一些js的前沿的东西。
接下来的就是加分项,ES2020,新增了一个数据类型,bigInt,
关于bigInt扯起来就话长了,面试的时候你只需要说: ES2020引入了一种新的数据类型 BigInt。BigInt 只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。
到这里还不算完,JavaScript即将推出两个新的数据类型:Record 和 Tuple。
今天我们就来认识一下这两个新增的数据类型吧!
Record 可以理解为只读的Object
怎么创建呢?语法如下
// Records
const oneRecord = #{
name: 'zhangsan',
age: 18
}
Tuple 可以理解为只读的数组。
// Tuple
const oneTuple = #['1', '2', '3']
他们的三个特性要了解:
1 只读性,就是你改变会报错
oneRecord[age] = 20 // error
2 非唯一性
如果定义两个对象,即使他们的内容都一样,也不会相等,因为他们的内存地址不一样
let obj1 = {name:'zhangsan1',age:18}
let obj2 = {name:'zhangsan1',age:18}
obj1 === obj2 // false
但是Records 就不同了,只要内容相同,就是全等的
let obj3 = #{name:'zhangsan1',age:18}
let obj4 = #{name:'zhangsan1',age:18}
obj3 === obj4 // true
3 普通对象和数组的转换
const oneRecord = Record({name:'zhangsan1',age:18}); // #{name:'zhangsan1',age:18}
const oneTuple = Tuple(['1', '2', '3']); // #['1', '2', '3']
这两个数据类型可以用于保护一些数据,比如函数的返回值、对象内部的静态属性
所以,在面试的时候如果能透漏出你了解的这些,肯定会给面试官留下不一样的印象哦~