Symbol() + '' 投掷
Symbol() + ''
TypeError:无法将符号值转换为字符串
而已知的解决方法是使用 String(Symbol())
String(Symbol())
这看起来与其他原语不一致,包括那些几乎永远不应该被强制的原语( undefined 和 null ).
undefined
null
到底是怎么回事 String + '' (除非有效)?规范是否明确规定 一串 是否应接受符号?以一种方式允许而以另一种方式不允许的动机是什么?
String
+ ''
一串
字符串与+''的区别到底是什么(除非它工作)?规范是否明确规定字符串应接受符号?
他们在以下方面有所不同: String() Symbol() ,鉴于 + ToString() 抛出一个 TypeError a的例外情况 符号() .
String()
Symbol()
+
ToString()
TypeError
符号()
规格:
如果NewTarget未定义,并且Type(value)为Symbol,则返回SymbolDescriptiveString(value)。
从…起 + 评估规范:
设lstr为ToString(lprim)。 返回故障(lstr)。 返回故障(rstr)。 返回连接lstr和rstr的结果字符串。
lprim 和 rprim
lprim
rprim
从
符号:引发TypeError异常。
以一种方式允许而以另一种方式不允许的动机是什么?
String() ES6 Spec
+ operator runtime evaluation ES6 Spec
ToString() Output behavior ES6 Spec