6

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?

Mohit Bhardwaj
  • 9,650
  • 3
  • 37
  • 64

3 Answers3

9

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.

Benjamin Gruenbaum
  • 270,886
  • 87
  • 504
  • 504
2

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?

Meet Patel
  • 482
  • 4
  • 12
1

undefined means a variable has not been declared, or has been declared but has not yet been assigned a value, null is an assignment value that means “no value” http://www.jstips.co/en/javascript/differences-between-undefined-and-null/

The naturality of js of casting variables types is applied in null + 1 (because null is typeof object), meanwhile it cannot be applied in a "no value" (undefined).

When JavaScript tries to operate on a "wrong" data type, it will try to convert the value to a "right" type. https://www.w3schools.com/js/js_type_conversion.asp

More details: https://codeburst.io/javascript-null-vs-undefined-20f955215a2

zelda11
  • 425
  • 2
  • 7