Pat*_*rts 8 javascript type-conversion ecmascript-6
阅读SymbolJavaScript中的文档,并在几个环境(Chrome,Firefox,Node.js)中进行测试,我意识到我对隐式字符串转换的理解是有缺陷的.
我总是认为toString()在尝试转换为字符串时调用了对象的方法,并且如果该函数没有返回基元,那么它调用了对象的toPrimitive()方法,如果这不起作用,则会输入错误.但是,这个解释无法涵盖TypeError那个Symbol:
var sym = Symbol("test");
try {
console.log(sym + "ing");
} catch (error) {
console.error(error);
}Run Code Online (Sandbox Code Playgroud)
TypeError: Cannot convert a Symbol value to a string
Run Code Online (Sandbox Code Playgroud)
但很明显,Symbols有一个有效的toString()方法.那为什么不叫呢?
toString在进行隐式字符串转换时,调用对象方法是正确的.但是,正如规范所述,符号上的隐式字符串转换会导致a TypeError.
鉴于字符串和符号都可以是属性键,您希望保护人们不会意外地将符号转换为字符串.
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |