js数据类型有几种
- ES6之前有六种,之后有八种
- 数字number,字符串string,布尔值boolean,表示不存在null 和 undefinded,约定表示对象为空用Null,表示非对象为空undefined,最后object对象
- es6之后新增加bigint 和 symbol,为什么要用bigint,js的number默认是双精度浮点数,存一个1会存1.0,而且是六十四位去保存,保存的数字比较大但是精度有限,这样就引入了Bigint,当需要精度的要求的时候后面加一个n,表示Bigint。
追问Symbol
在 JavaScript 中,Symbol 是一种原始数据类型,表示唯一的、非字符串标识符。Symbol 主要用作对象中的属性键,以表示应该是唯一的值,例如对象实例标识符。它们还可以用作在对象中创建私有属性的方式,因为 Symbol 不可枚举,无法使用 for-in 循环或 Object.keys() 方法访问。
这里是使用 Symbol 作为对象的属性键的示例:
const obj = {};
const id = Symbol('id');
obj[id] = '12345';
console.log(obj[id]); // '12345'
在此示例中,使用 id Symbol 作为 obj 对象的属性键。使用 Symbol() 函数创建该 Symbol,该函数采用可选的字符串参数,该参数用作 Symbol 的描述。然后使用 id Symbol 将 obj 对象的值设置为 '12345',并可以使用 id Symbol 作为属性键来访问该值。
Symbol 还可以用作创建不与其他对象共享的唯一对象键的方式。当创建需要具有唯一键的对象时,这很有用,例如用于实例标识符或用于在对象中创建私有属性。
这里是使用 Symbol 创建唯一对象键的示例:
const id1 = Symbol('id');
const id2 = Symbol('id');
console.log(id1 === id2); // false
在此示例中,使用 Symbol() 函数创建了两个具有相同描述的 Symbol。但是,即使描述相同,Symbol 本身也是唯一的,并且彼此不相等。这意味着它们可以用作唯一的对象键。
除了作为属性键和唯一对象键之外,Symbol 还具有其他用途。例如,你可以使用 Symbol.for() 函数创建全局 Symbol,该 Symbol 可在不同的上下文之间共享。你还可以使用 Symbol.keyFor() 函数检索全局 Symbol 的描述。
此外,Symbol 还有一些内置的常量 Symbol,例如 Symbol.iterator,它可用于实现迭代器协议