Symbol直接用作属性名为什么不能访问到?

直接访问 a[Symbol("2")] 返回 undefined,为什么咧。
在 a对象里可以看到这个属性。

   const sym = Symbol("1");
    const a = {
      [sym]: 1,
      [Symbol("2")]: 2,
    };
    console.log(a[sym], a[Symbol("2")]);  // 1 undefined
阅读 2.7k
2 个回答

每次调用 Symbol() 都会生成一个不同的 Symbol ,即使参数一样。

Symbol的参数只是作为描述

注意,Symbol函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的Symbol函数的返回值是不相等的。

所以你对象a里的Symbol("2")console里的Symbol("2")是绝不会相等的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题