если я хочу проверить результат выражения, и функция вернет NaN , как бы я это проверить?
примеры: $('amount').value.toInt()!='NaN'
^не работает, и я предполагаю, что возвращаемое значение не является строкой,
$('amount').value.toInt()!=NaN
^не кажется, работают либо, и это одна кажется очевидным
так как я проверить погоду возвращаемого значения не число?Что такое зарезервированное ключевое слово для NaN в javascript?
ответ
Значение NaN определяется как не равное всем, включая его. Проверьте, соответствует ли значение NaN с функцией isNaN()
, соответственно. (ECMAScript 6 добавляет функцию Number.isNan()
с различной семантикой для аргументов, отличных от числа, но пока не поддерживается во всех браузерах по состоянию на 2015 год).
Есть два встроенных свойства, доступных со значением NaN: глобальное свойство NaN
(т. Е. window.NaN
в браузерах) и Number.NaN
. Это не ключевое слово на языке. В старых браузерах свойство NaN
может быть перезаписано с потенциально запутанными результатами, но с ECMAScript 5 standard it was made non-writable.
- Как указано в комментариях в комментарии, существует также глобальная функция isFinite(), которая может быть полезна.
спасибо большое :) действительно помогло +20rep для вас – lock
@lock, это 10 для голосования и 15 для принятия, так что это 25 (если в последнее время ничего не изменилось). А вот еще 10, @Miles. – paxdiablo
ohw Извините, неверные математики, еще раз спасибо очень полезному сообществу разработчиков – lock
Оператор равенства (== и ===) не может использоваться для проверки значения против NaN. Вместо этого используйте Number.isNaN() или isNaN().
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
лучший способ проверить результат числовой операции против 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 (хороший и причудливый язык)
Он подбрасывает неопределенные обычно для любого сумасшествия. –