gpt4 book ai didi

ecmascript-6 - Symbol() 和 Symbol.for() 的区别

转载 作者:行者123 更新时间:2023-12-04 22:58:21 28 4
gpt4 key购买 nike

我尝试使用 Symbol 创建对象键并用 Symbol.for 找到对应的值,但它不起作用:

const sym = Symbol("x");

let obj = {
[sym]: "val"
}

console.log(obj[sym]); // "val"
console.log(obj[Symbol.for("x")]); // undefined, but expected "val"

为什么?

最佳答案

使用 Symbol() 创建的符号是唯一且不可变的,因此您可以引用它的唯一方法是将其分配给变量。

需要注意的是,构造函数参数实际上是对符号的描述,而不是键。来自 MDN:

A description of the symbol which can be used for debugging but not to access the symbol itself



(强调我的)
Symbol.for另一方面,使用指定的键将符号存储在全局注册表列表中,因此为了让您的示例工作,您需要使用 Symbol.for 创建和访问符号。 :
const sym = Symbol.for("x"); // Create a symbol in the global registry

let obj = {
[sym]: "val"
}

console.log(obj[Symbol.for("x")]); // Access the symbol from the global registry

关于ecmascript-6 - Symbol() 和 Symbol.for() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34587901/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com