纯粹的意外,我偶然发现了NaN
和10 / 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 :(得分:3)
每当你将数字除以0时,它变为Infinity
而不是假。
答案 1 :(得分:0)
为了解释为什么它涉及Infinity,这是因为浮点数学的工作原理:
http://en.wikipedia.org/wiki/Floating_point#Infinities
(我也不知道,但是当你读它时它确实有意义)