【问题标题】: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(或它的一部分)

标签: javascript jquery


【解决方案1】:

那是因为NaN 被定义为不等于任何东西(包括它自己)。检查它:

>> NaN === NaN
False

您应该改用 isNaN() 函数:

>> isNaN(NaN)
true
>> isNaN(0/0)
true
>> isNaN(parseInt('a'))
true

【讨论】:

    猜你喜欢
    • 2015-03-15
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2017-01-01
    • 2014-02-16
    相关资源
    最近更新 更多