Hacker News new | ask | show | jobs
In JavaScript, why does (null + null === 0) return true?
1 points by swozniak 4431 days ago
I could be convinced into thinking == would return true if null was treated as 0 (so 0 + 0 = 0), but with ===, this doesn't seem right at all, especially considering:

typeof null === 'object'

and

typeof 0 === 'number'

Can someone explain?

3 comments

I don't really know (I don't have that in depth knowledge of javascript) but it is probably like you said, because you are doing a sum, it treats null as 0, so (0 + 0 === 0) is true.

You can do the same with false: (false + false === 0)

And also (true + true === 2) is true

Edit: The same way as if you do "" + 1 you get "1" because it assumes + as string concatenation

The + operation is evaluated first, and + coerces nulls to zeros. This looks like:

(null + null) === 0

(0) === 0

true

Ah, it looks like JavaScript coerces null to the type against which it is being compared.

Thanks!

> null + null

0

> +null

0

Looks like JS converts null to 0 when it's used in a number context.