为什么javascript中的null + null = 0

Ano*_*ird 10 javascript null

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

T.J*_*der 16

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

因此null强制转换为0,这样你就得到了0+0这个数字0.


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