Symbol.for()

**Symbol.for()** 静态方法在运行时范围内的符号注册表中搜索具有给定键的现有符号,如果找到则返回它。否则,将使用此键在全局符号注册表中创建一个新符号。

试一试

语法

js
Symbol.for(key)

参数

key

字符串,必需。符号的键(也用于符号的描述)。

返回值

如果找到,则为具有给定键的现有符号;否则,将创建一个新符号并返回。

描述

Symbol() 相反,Symbol.for() 函数创建了一个在全局符号注册表列表中可用的符号。Symbol.for() 也不一定在每次调用时都创建一个新符号,而是首先检查注册表中是否已经存在具有给定 key 的符号。在这种情况下,将返回该符号。如果找不到具有给定键的符号,Symbol.for() 将创建一个新的全局符号。

示例

使用 Symbol.for()

js
Symbol.for("foo"); // create a new global symbol
Symbol.for("foo"); // retrieve the already created symbol

// Same global symbol, but not locally
Symbol.for("bar") === Symbol.for("bar"); // true
Symbol("bar") === Symbol("bar"); // false

// The key is also used as the description
const sym = Symbol.for("mario");
sym.toString(); // "Symbol(mario)"

为了避免您的全局符号键与其他(库代码)全局符号发生名称冲突,为您的符号添加前缀可能是一个好主意

js
Symbol.for("mdn.foo");
Symbol.for("mdn.bar");

规范

规范
ECMAScript 语言规范
# sec-symbol.for

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅