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

时间:2015-01-08 09:24:10

标签: javascript nan

纯粹的意外,我偶然发现了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

2 个答案:

答案 0 :(得分:3)

每当你将数字除以0时,它变为Infinity而不是假。

答案 1 :(得分:0)

为了解释为什么它涉及Infinity,这是因为浮点数学的工作原理:

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

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