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
, butNumber(undefined) == NaN
. – Reinstate Monica Cellio Commented Mar 29, 2018 at 7:48 -
2
Because
Number(null)
is 0 andNumber(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
3 Answers
Reset to default 10Basically, 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
版权声明:本文标题:javascript - Why is `null + 1 = 1` but `undefined + 1 = NaN`? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1740172468a2235799.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论