какое зарезервированное ключевое слово для NaN в javascript?

StackOverflow https://stackoverflow.com/questions/559792

  •  05-09-2019
  •  | 
  •  

Вопрос

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

итак, как мне проверить, не является ли возвращаемое значение числом?

Это было полезно?

Решение

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

Доступны два встроенных свойства со значением NaN:глобальный NaN собственность (т.е. window.NaN в браузерах), и Number.NaN.Это так не ключевое слово языка.В старых браузерах NaN свойство может быть перезаписано с потенциально запутанными результатами, но с Стандарт ECMAScript 5 был сделан недоступным для записи.

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

Другие советы

лучший способ проверить результат числовой операции с помощью 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 (хороший и причудливый язык)

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

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top