2009-02-18 14 views
8

если я хочу проверить результат выражения, и функция вернет NaN , как бы я это проверить?
примеры:
$('amount').value.toInt()!='NaN'
^не работает, и я предполагаю, что возвращаемое значение не является строкой,
$('amount').value.toInt()!=NaN
^не кажется, работают либо, и это одна кажется очевидным

так как я проверить погоду возвращаемого значения не число?Что такое зарезервированное ключевое слово для NaN в javascript?

+0

Он подбрасывает неопределенные обычно для любого сумасшествия. –

ответ

36

Значение NaN определяется как не равное всем, включая его. Проверьте, соответствует ли значение NaN с функцией isNaN(), соответственно. (ECMAScript 6 добавляет функцию Number.isNan() с различной семантикой для аргументов, отличных от числа, но пока не поддерживается во всех браузерах по состоянию на 2015 год).

Есть два встроенных свойства, доступных со значением NaN: глобальное свойство NaN (т. Е. window.NaN в браузерах) и Number.NaN. Это не ключевое слово на языке. В старых браузерах свойство NaN может быть перезаписано с потенциально запутанными результатами, но с ECMAScript 5 standard it was made non-writable.

  • Как указано в комментариях в комментарии, существует также глобальная функция isFinite(), которая может быть полезна.
+0

спасибо большое :) действительно помогло +20rep для вас – lock

+0

@lock, это 10 для голосования и 15 для принятия, так что это 25 (если в последнее время ничего не изменилось). А вот еще 10, @Miles. – paxdiablo

+1

ohw Извините, неверные математики, еще раз спасибо очень полезному сообществу разработчиков – lock

1

Оператор равенства (== и ===) не может использоваться для проверки значения против NaN. Вместо этого используйте Number.isNaN() или isNaN().

NaN === NaN;  // false 
Number.NaN === NaN; // false 
isNaN(NaN);   // true 
isNaN(Number.NaN); // true 
2

лучший способ проверить результат числовой операции против NaN является ПОДХОД таким образом, пример:

var x = 0; 
var y = 0; 
var result = x/y; // we know that result will be NaN value 
// to test if result holds a NaN value we should use the following code : 

if(result !=result){ 
console.log('this is an NaN value'); 
} 

и это сделано.

хитрость заключается в том, что NaN не может быть по сравнению с любым другим значением, даже с ним самостоятельно (NaN! = NaN всегда верно, поэтому мы можем воспользоваться этим и сравнить результат с собой)

это JavaScript (хороший и причудливый язык)