为什么javascript中的null + null = 0

时间:2016-09-04 09:02:29

标签: javascript null

当我在javascript中注意到null+null等于0时,我正在做一些有趣的测试。 有什么理由吗?

1 个答案:

答案 0 :(得分:16)

+运算符仅适用于数字和字符串。当呈现不是数字或字符串的东西时,它会强制执行。规则是covered by the spec,但是短版本是操作数是coerced to primitives(在这种特定情况下没有任何变化,null是原始的)然后如果其中一个是字符串,那么另一个被强制为字符串并连接完成;如果两者都不是字符串,则两者都被强制转换为数字并完成添加。

所以null获得coerced to a number,即0,因此您获得的0+0当然是0

如果有人对David Haim的null+[] is "null" observation感到好奇,那就是因为我提到的那种强制到原始的事情:空数组[]被强制转换为原语。当您将数组强制转换为基元时,它最终会调用toString(),调用join()[].join()"",因为没有元素。所以它是null+""。因此,null被强制转换为字符串而不是数字,我们"null"+""当然是"null"