Is null
evaluated to 0
and undefined
to NaN
on arithmetic expressions?
According to some testing it seems so:
> null + null
0
> 4 + null
4
> undefined + undefined
NaN
> 4 + undefined
NaN
Is it safe or correct to assume this? (a quote from a documentation would be A+).
Is null evaluated to 0 and undefined to NaN on arithmetic expressions? Is it safe or correct to assume this?
Yes, it is. An "arithmetic expression" would use the ToNumber
operation:
Argument Type | Result
--------------+--------
Undefined | NaN
Null | +0
… |
It is used in the following "arithmetic" expressions:
+
and -
operators+
operator if none of the two arguments is a stringIt is not used by the equality operators, so null == 0
is false (and null !== 0
anyway)!