Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is `null + 1 = 1` but `undefined + 1 = NaN`?

null + 1 = 1

undefined + 1 = NaN

I am not able to understand what is the logic behind this. Shouldn't both have returned same result?

like image 525
Mohit Bhardwaj Avatar asked Mar 29 '18 07:03

Mohit Bhardwaj


2 Answers

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.

like image 94
Benjamin Gruenbaum Avatar answered Oct 08 '22 19:10

Benjamin Gruenbaum


Because undefined means its value is not defined yet so it will take NaN and when you add 1 to it NaN + 1 which is resulting that value is still not defined NaN

And on the other hand null + 1 - object have null value and your are trying to add 1 so that it will return 1 which assigned to object

You can also refer this for basic difference - What is the difference between null and undefined in JavaScript?

like image 32
Meet Patel Avatar answered Oct 08 '22 19:10

Meet Patel