JavaScript:NaN 的行为作为文字并存储在变量中

JavaScript: behavior of NaN as literal and stored in variable

纯属偶然,我偶然发现了 NaN10 / 0 之间的差异。我对这种行为的原因感兴趣。这是我的代码,使用 FF 34 的控制台。

//as expected:
console.log(NaN == false); //->false

//now:
function m(value) { if (value) { return 'hi, NaN is not falsy'; }} console.log(m( 5 / 0)); //->"hi, NaN is not falsy"
//of course:
console.log(typeof NaN); //-> "number"
//but:
function m(value) { if (value) { return 'hi, NaN is not falsy'; }} console.log(m(NaN)); //-> undefined

非常感谢您的任何建议!

::编辑::

好吧,我的错:

function m(value) { if (value) { return 'hi, NaN is not falsy'; }} console.log(m(parseInt('hi', 10))); //->undefined

只要你将数字除以 0,它就会变成 Infinity 而不是假。

解释为什么它会出现无穷大,因为浮点数学就是这样工作的:

http://en.wikipedia.org/wiki/Floating_point#Infinities

(我也不知道,但是当你阅读它时确实有道理)