Hit*_*mar 2 javascript symbols ecmascript-6
我正在学习 Es6: Symbols。我正在玩它并尝试使用另一个符号作为描述创建一个符号:
var s = Symbol('foo');
console.log(s.toString()); //"Symbol(foo)"
var sS = Symbol(s); // <- thorws error
var sF = Symbol.for(s); // <- thorws error
console.log(s, sA);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么不让我使用现有符号作为描述。当我运行上面的代码时,我看到以下控制台错误:
Uncaught TypeError: Cannot convert a Symbol value to a string
at Function.for (native)
Run Code Online (Sandbox Code Playgroud)
正如错误所说,它无法将符号转换为字符串。但是正如您在代码(第 2 行)中看到的那样,通过使用toString()函数,我可以将符号转换为字符串。任何人都可以请详细说明发生了什么?谢谢。
为什么不让我使用现有符号作为描述
仅仅因为所有描述都必须是字符串,没有别的。
该错误表示它无法将符号转换为字符串,但通过使用
toString()我可以将符号转换为字符串
是的,您可以显式地将符号转换为字符串并使用该toString方法获取其描述。但是所有隐式转换都会抛出异常——这是一个故意的特性,以防止我们意外地使用非唯一描述而不是符号,例如,在使用属性键进行字符串连接时。
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |