【面试题】JS第七种数据类型Symbol详解

我想请教一下,【面试题】JS第七种数据类型Symbol详解
最新回答
星空伪装的忧蓝

2024-11-03 00:11:48

Symbol是ES6引入的唯一数据类型,用于表示独一无二的值,它是JavaScript中的第七种数据类型。

Symbol的特点包括:

1. 唯一性:Symbol值在内存中独一无二,用于避免命名冲突。

2. 无法与其它数据运算。

3. 对象属性不能用for...in遍历,但可用Reflect.ownKeys方法获取。

在使用Symbol()创建变量时,每次调用返回的值都不同,即使参数相同。

这是因为Symbol()返回的值在内存中是唯一的,无法通过相同的参数重复创建相同的Symbol。

与对象遵循相同的规则,但字符串不遵循相似的规则。例如,通过字符串“123”创建的变量a和b,指向同一内存地址。

作为属性名的Symbol可以避免命名冲突。

Symbol.for()方法允许重复使用相同的Symbol:

使用Symbol.for()时,提供描述信息作为参数,若已创建则返回已有的Symbol,否则创建新Symbol并返回。

Symbol.for()有一个登记机制,只会检查通过for创建的Symbol,不会检查Symbol()创建的。

Symbol.keyFor()方法接收一个通过Symbol.for()创建的Symbol,返回其描述信息。