Mohit Bhardwaj
Mohit Bhardwaj

Reputation: 10083

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?

Upvotes: 8

Views: 6372

Answers (3)

zelda11
zelda11

Reputation: 433

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

Upvotes: 1

Meet Patel
Meet Patel

Reputation: 510

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?

Upvotes: 2

Benjamin Gruenbaum
Benjamin Gruenbaum

Reputation: 276306

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.

Upvotes: 10

Related Questions