【发布时间】:2017-04-18 02:06:45
【问题描述】:
在 ES6 中 Symbol 上有一个 .toString(),它返回 Symbol 的字符串表示形式,但想知道为什么 '' + Symbol() 不起作用(运行此表达式会抛出我没想到的 TypeError )?后者是否只是在新的Symbol 上调用.toString() 并将其附加(+)到空字符串?
【问题讨论】:
-
@Dai
'' + 123可以作为隐式类型转换,但为什么'' + Symbol()甚至不能被视为隐式转换? -
对不起,我看错了你的问题。您实际看到的是什么行为?你有
TypeError或其他的吗? -
@Dai,很抱歉这个问题引起了混乱。稍作修改。我看到
'' + Symbol()抛出 TypeError,想知道为什么会这样,因为Symbol().toString()有效。 -
当我尝试 Symbol().__proto__.toString() 时它会抛出一个错误,也许它可以帮助理解这一点......(我不知道答案......)
标签: javascript ecmascript-6 symbols