Symbol 是 ES6 引入的一种原始数据类型,用于创建唯一且不可变的标识符,特别适合需要避免命名冲突的场景。以下是核心知识点:

📌 基本用法

  1. 创建 Symbol
    使用 Symbol() 函数生成,可传递描述参数(仅用于调试)

    const key = Symbol("description");
    console.log(key); // Symbol(description)
    
  2. Symbol 的特性

    • 全局唯一性:Symbol("foo") === Symbol("foo")false
    • 不可枚举性:不会出现在 Object.keys()for...in
    • 不能作为对象属性名(需用 [Symbol] 语法)
    • 可通过 Symbol.for() 全局注册共享 Symbol

📚 示例代码

const sym1 = Symbol();
const sym2 = Symbol("abc");
const sym3 = Symbol.for("abc");

// 对象属性使用
const obj = {
  [sym1]: "值1",
  [sym2]: "值2"
};

// 全局 Symbol 查找
const sym4 = Symbol.for("abc");
console.log(sym4 === sym3); // true

// Symbol 转换为字符串
console.log(sym2.toString()); // Symbol(abc)

🌐 扩展阅读

ES6_Symbol
JavaScript_Symbol_Icon