var a = {};
a + 1 // return "[object Object]1"
我知道为什么会这样。 Object toPrimitive 发生了,在 a.toString 返回 [object Object] 之后与 number 合并 但是为什么当我输入这样的代码时
{} + 1 // return 1
对象没有转换成字符串?
还有为什么对象 toPrimitive 提示 Number 返回 0 当对象转换为数字时,这看起来是 valueOf 函数,为什么 valueOf 返回 0?
最佳答案
第一个是一个对象,你要添加带有数字的对象
var a = {};
a + 1 // return "[object Object]1"
第二个是 block statement
不反对
{} + 1 // return 1
关于javascript - 对象的隐式类型强制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240476/