Symbol() 构造函数

**Symbol()** 函数返回 Symbol 类型的原始值。

试试

语法

js
Symbol()
Symbol(description)

注意: Symbol() 只能在没有 new 的情况下调用。尝试使用 new 构造它会抛出一个 TypeError

参数

description 可选

字符串。符号的描述,可用于调试,但不能用于访问符号本身。

示例

创建符号

要创建一个新的原始符号,您可以编写 Symbol(),并在其中包含一个可选的字符串作为描述。

js
const sym1 = Symbol();
const sym2 = Symbol("foo");
const sym3 = Symbol("foo");

以上代码创建了三个新符号。请注意,Symbol("foo") 不会将字符串 "foo" 强制转换为符号。它每次都会创建一个新的符号。

js
Symbol("foo") === Symbol("foo"); // false

new Symbol()

以下使用 new 运算符的语法将抛出一个 TypeError

js
const sym = new Symbol(); // TypeError

这可以防止作者创建显式的 Symbol 包装器对象而不是新的符号值,并且可能令人惊讶,因为创建围绕原始数据类型的显式包装器对象通常是可能的(例如,new Booleannew Stringnew Number)。

如果你真的想创建一个 Symbol 包装器对象,你可以使用 Object() 函数。

js
const sym = Symbol("foo");
const symObj = Object(sym);
typeof sym; // "symbol"
typeof symObj; // "object"

规范

规范
ECMAScript 语言规范
# sec-symbol-constructor

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅