Сводка
Глобальное свойство NaN является значением, представляющим не-число (Not-A-Number).
Атрибуты свойстваNaN |
|
|---|---|
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Описание
NaN является свойством глобального объекта.
Начальным значением NaN является Not-A-Number (не-число) — то же самое значение, что и у Number.NaN. В современных браузерах NaN является ненастраиваемым и незаписываемым свойством. Даже когда это не так, избегайте его переопределения.
В программах NaN используется довольно редко. Это возвращаемое значение в ситуациях, когда математические (Math) функции не срабатывают должным образом (например, при вызове Math.sqrt(-1)) или когда функция, пытающаяся считать число из строки, терпит неудачу по причине того, что в строке не число (parseInt('blabla')).
Проверка на равенство NaN
NaN является неравным (посредством сравнения через ==, !=, ===, and !==) любому другому значению, включая другое значение NaN. Используйте Number.isNaN() или isNaN(), чтобы наиболее понятным образом определить является ли значение значением NaN. Или выполните само-сравнение: NaN, и только NaN, в результате такого сравнения будет неравным самому себе.
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
function valueIsNaN(v) { return v !== v; }
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true
Тем не менее, обратите внимание на разницу между функцией isNaN() и методом Number.isNaN(): первая вернет true, если значение в настоящий момент является NaN, или если оно станет NaN после того, как преобразуется в число, в то время как последний вернет true, только если текущим значением является NaN:
isNaN('hello world'); // true
Number.isNaN('hello world'); // false
Спецификации
| Спецификация | Статус | Комментарии |
|---|---|---|
| ECMAScript Latest Draft (ECMA-262) Определение 'NaN' в этой спецификации. |
Черновик | |
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'NaN' в этой спецификации. |
Стандарт | |
| ECMAScript 5.1 (ECMA-262) Определение 'NaN' в этой спецификации. |
Стандарт | |
| ECMAScript 1st Edition (ECMA-262) | Стандарт | Initial definition. Implemented in JavaScript 1.3 |
Совместимость с браузерами
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
| Компьютеры | Мобильные | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NaN | Chrome Полная поддержка 1 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 4 | Opera Полная поддержка Да | Safari Полная поддержка Да | WebView Android Полная поддержка 1 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка Да | Safari iOS Полная поддержка Да | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка Да |
Легенда
- Полная поддержка
- Полная поддержка