为什么`null + 1 = 1`但是'undefined + 1 = NaN`?

Moh*_*waj 3 javascript nan undefined

null + 1 = 1

undefined + 1 = NaN

我无法理解这背后的逻辑是什么.两者都不应该返回相同的结果吗?

Ben*_*aum 5

基本上,因为这是语言规范所说的 - 看ToNumber:

Type        Result
Null        +0
Undefined   NaN
Run Code Online (Sandbox Code Playgroud)

而且NaN+任何东西都是NaN

从语言的角度来看,这可能是有意义的:null意味着一个显式的空值,而undefined意味着一个未知的值.在某种程度上 - 零是"数字空值",因为它对于加法是中性的.那就是说 - 这是相当长的一段时间,我认为这通常是糟糕的设计.在真正的JavaScript代码中 - 您几乎从不添加null任何内容.