【发布时间】:2016-04-25 04:19:01
【问题描述】:
阅读了关于 Symbols 的 JavaScript 文档,并在一些环境(Chrome、Firefox、Node.js)中进行了测试,我意识到我对隐式字符串转换的理解是有缺陷的。
我一直觉得对象的toString()方法在尝试转换为字符串时被调用了,如果该函数没有返回原语,那么它会调用对象的toPrimitive()方法,如果那样的话没用它会输入错误。但是,这个解释并没有涵盖Symbols 抛出的TypeError:
var sym = Symbol("test");
try {
console.log(sym + "ing");
} catch (error) {
console.error(error);
}
TypeError: Cannot convert a Symbol value to a string
但很明显Symbols 有一个有效的toString() 方法。那为什么不叫呢?
【问题讨论】:
标签: javascript type-conversion ecmascript-6