哈尔滨网站建设学校,网站开发实训安排,广州短视频运营营销报价,wordpress 压缩插件文章目录 前言1.唯一性2. 描述3. 作为对象属性键4. 全局注册6. 不可变性7. 隐式转换 前言
Symbol是ES6新增内容#xff0c;代表创建后独一无二且不可变的数据类型#xff0c;它主要是为了解决可能出现的全局变量冲突的问题 在JavaScript发展的过程中#xff0c;其中的ES6带… 文章目录 前言1.唯一性2. 描述3. 作为对象属性键4. 全局注册6. 不可变性7. 隐式转换 前言
Symbol是ES6新增内容代表创建后独一无二且不可变的数据类型它主要是为了解决可能出现的全局变量冲突的问题 在JavaScript发展的过程中其中的ES6带来了一系列的新特性其中之一就是Symbol。Symbol是一种特殊的原始数据类型它提供了一种创建全局唯一标识符的方式这对于避免命名冲突尤其有用。不同于传统的字符串或数字每个Symbol都是独立且唯一的即使它们具有相同的描述。这使得Symbol非常适合用于对象属性的键从而避免了与其他属性键发生冲突的可能性。本文旨在深入探讨Symbol的各个方面包括它的创建、使用方法以及与其他数据类型的交互方式帮助更好地理解和利用这一特性。
1.唯一性
每次调用 Symbol() 都会返回一个新的、唯一的 Symbol 值
const sym1 Symbol();
const sym2 Symbol();
console.log(sym1 sym2); // false2. 描述
可以给 Symbol 提供一个可选的字符串参数作为描述这有助于调试但不会影响 Symbol 的唯一性
const sym Symbol(mySymbol);
console.log(sym.toString()); // Symbol(mySymbol)3. 作为对象属性键
Symbol 可以用作对象属性的键并且不会与任何字符串键冲突
const key Symbol(key);
const obj {[key]: value
};
console.log(obj[key]); // value
console.log(obj[key]); // undefined4. 全局注册
使用 Symbol.for(key) 可以创建一个全局唯一的 Symbol如果之前已经存在相同的键则返回已存在的 Symbol。
const sym1 Symbol.for(foo);
const sym2 Symbol.for(foo);
console.log(sym1 sym2); // true6. 不可变性
Symbol 是不可变的一旦创建就无法改变其值。
7. 隐式转换
当尝试将 Symbol 转换成其他类型如数字或字符串时会抛出 TypeError。不过Symbol 可以通过 .toString() 或 .description 获得其字符串表示形式。