Basically, because that's what the language spec says - looking at ToNumber
:
Type Result
Null +0
Undefined NaN
And NaN
+ anything is NaN
This might make some sense from the language perspective: null
means an explicit empty value whereas undefined implies an unknown value. In some way - zero is the "number empty value" since it is neutral to addition. That said - that's quite a stretch and I think this is generally bad design. In real JavaScript code - you almost never add null
to things.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…