2016-09-01 4 views
1

Я делаю решение на основе словаря ключ, у меня есть только два типа ключей, цифровой и альфа,Почему ParseInt (ключ) === NaN всегда принимает значение ложь

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

Я alreay нашел решение от этого вопроса javascript parseInt return NaN for empty string

Но мне было интересно, почему он всегда принимает значение ложь.

+1

'NaN = NaN', используйте' IsNaN (ParseInt (ключ)) 'или в случае' ParseInt (ключ) ' –

+0

, потому что IEEE 754 сказал так – stark

+0

и NaN! == NaN, потому что так было в начале и чтобы его изменить теперь может нарушить www (или его части) –

ответ

3

Это потому, что NaN определяется как не равный чему-либо (включая себя). Проверьте это:

>> NaN === NaN 
False 

Вы должны использовать функцию IsNaN() вместо:!

>> isNaN(NaN) 
true 
>> isNaN(0/0) 
true 
>> isNaN(parseInt('a')) 
true 
Смежные вопросы