为啥 parseInt(key) === NaN 总是评估为 false
Posted
技术标签:
【中文标题】为啥 parseInt(key) === NaN 总是评估为 false【英文标题】:Why parseInt(key) === NaN always evaluates to false为什么 parseInt(key) === NaN 总是评估为 false 【发布时间】:2017-01-09 06:17:12 【问题描述】:我正在根据字典键做决定,我只有两种类型的键,数字和字母,
var _dict = 'a':'one', 'b':'two', '1':'three' ;
$.each( _dict, function( key, value )
if( parseInt( key ) === NaN )
// this statement always evalute to false
else
);
如果我打印console.log(parseInt('a'))
,它也会返回NaN
我已经从这个问题javascript parseInt return NaN for empty string找到了解决方案
但我想知道为什么它总是评估为假。
【问题讨论】:
NaN != NaN
,使用isNaN(parseInt( key ))
或在你的情况下使用!parseInt( key )
因为 IEEE 754 是这么说的
和 NaN !== NaN 因为它在开始时是这样,现在更改它可能会破坏 www(或它的一部分)
【参考方案1】:
那是因为NaN
被定义为不等于任何东西(包括它自己)。检查它:
>> NaN === NaN
False
您应该改用 isNaN() 函数:
>> isNaN(NaN)
true
>> isNaN(0/0)
true
>> isNaN(parseInt('a'))
true
【讨论】:
以上是关于为啥 parseInt(key) === NaN 总是评估为 false的主要内容,如果未能解决你的问题,请参考以下文章
为啥 parseInt 使用 Array#map 产生 NaN?
为啥我在使用 parseINt 或 undefined 时得到 NaN?