Is null considered zero and undefined not a number on arithmetic expressions?

talles picture talles · Jan 8, 2014 · Viewed 13.1k times · Source

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+).

Answer

Bergi picture Bergi · Jan 8, 2014

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:

It is not used by the equality operators, so null == 0 is false (and null !== 0 anyway)!