首先js数据类型分为两大类:
1.基本数据类型:String、Number、Boolean、Undefinded、null
2.引用数据类型:Array、Object
新增的两个基本数据类型:Symble(ES新增)、Biglnt(ES10新增)
Symble
symble是一种基本数据类型,它指的是唯一的、独一无二的值,通过Symbol()生成的值都是唯一的
Symble出现的目的:因为通过Symbol()返回的symbol值是唯一的,所以一个symbol值能作为对象属性的标识符
不支持new Symbol()方法
如下:
let this_symbol = Symbol();
let that_symbol = Symbol();
console.log(this_symbol === that_symbol)--------------输出false
console.log(typeof this_symbol)---------------------------输出symbol
console.log(this_symbol.constructor === Symbol)------输出true
那么如何使用symbol去创建两个相等的变量?
如下:
let this_symbol = Symbol.for('symbol');
let that_symbol = Symbol.for('symbol');
console.log(this_symbol === that_symbol)--------------输出true
因此 Symbol.for('symbol');方法创建的symbol会被放入一个全局的symbol注册表中,同时它并不是每一次都注册新的,它会查找以前的,有的话就使用
Biglnt
Biglnt是一种数字类型的数据,它可以表示任意精度格式的整数。
它的出现是由于js中数字都保存成64位浮点数,造成数值的精度只能到53个二进制(相当于16个十进制位),大于这个范围,js无法精确表示,为了使js更适合金融方面的精确计算而产生的。
ES10引入新的基本数据类型来解决这个问题。Biglnt只用来表示整数,没有位数的限制,任何位数的整数都可以精确表示。
但Biglnt与Number完全不同,是两类,无法进行混合运算,想运算必须类型转化为同一个
为了与Number区分,Biglnt的形式为在数字后面加上n
例如:1n+2n
同样Biglnt不支持New Biglnt()方法
如果使用Biglnt(1,2)传递的参数必须为整数