admin管理员组

文章数量:1244423

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?

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?

Share Improve this question asked Mar 29, 2018 at 7:46 Mohit BhardwajMohit Bhardwaj 10.1k7 gold badges40 silver badges65 bronze badges 5
  • 7 Number(null) == 0, but Number(undefined) == NaN. – Reinstate Monica Cellio Commented Mar 29, 2018 at 7:48
  • 2 Because Number(null) is 0 and Number(undefined) is NaN – Benjamin Gruenbaum Commented Mar 29, 2018 at 7:48
  • 2 have a crack with github./denysdovhan/wtfjs – Edwin Commented Mar 29, 2018 at 7:49
  • Thanks for the link @Edwin (y) – Mohit Bhardwaj Commented Mar 29, 2018 at 7:51
  • after jquery upgrade to 3.0, height() method returns undefined instead of null in some cases. somewhere there has appeared a bug because of this so that i have also experienced it. – funky-nd Commented Apr 10, 2020 at 13:38
Add a ment  | 

3 Answers 3

Reset to default 10

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.

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?

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./js/js_type_conversion.asp

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

本文标签: javascriptWhy is null11 but undefined1NaNStack Overflow