浅谈js新增数据类型

474 阅读2分钟

首先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)传递的参数必须为整数