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,返回其描述信息。