+ 3
Javascript NaN
var a = 10 + null; var b = 10 + undefined; console.log(a+ " " + b); // outputs 10 NaN From what I can see, only the string (represented by " ") is not a number... So why isn't the output 10 NaN 10? What happened to the 10 in var b?
2 Answers
+ 9
null is an object that represents a nothing value where undefined is a type.
null when used is mathematical operations is treated like the value 0.
So for 10 + null is equivalent to 10 + 0, which is equal to the value 10.
Where undefined is of a different type than a number. When you try to perform a mathematical operation with undefined it cannot be coerced to a different type or a number type in this case so the result of the operation cannot be evaluated and returns "Not a Number" NaN.
https://codeburst.io/understanding-null-undefined-and-nan-b603cb74b44c
https://stackoverflow.com/questions/25799408/javascript-null-and-plus-operatior
+ 4
ChaoticDawg The first article does a good job for the most part, but might fall short with some of the explanations. I may post some feedback later to the author to help fill in the gaps later. The two main answers in the 2nd link were fantastic.
Thanks for sharing those links. đ
----
Solus Building on the explanation by @ChaoticDawg, I'd like to respond to your stated questions:
1. So why isn't the output 10 NaN 10?
It might help to see the code rewritten to reflect the evaluated expressions up to the console.log(...) line:
var a = 10; //10 + null as a number
var b = NaN; // 10 + undefined
Now... putting the above together:
console.log(10 + " " + NaN);
// outputs 10 NaN
2. What happened to the 10 in var b?
The var b never received the value 10.
b was assigned NaN.