Сводка

Глобальное свойство NaN является значением, представляющим не-число (Not-A-Number).

Атрибуты свойстваNaN
Записываемое нет
Перечисляемое нет
Настраиваемое нет

Описание

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

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
NaNChrome Полная поддержка ДаEdge Полная поддержка ДаFirefox Полная поддержка 1IE Полная поддержка ДаOpera Полная поддержка ДаSafari Полная поддержка ДаWebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Полная поддержка 4Opera Android Полная поддержка ДаSafari iOS Полная поддержка ДаSamsung Internet Android Полная поддержка Даnodejs Полная поддержка Да

Легенда

Полная поддержка  
Полная поддержка

Смотрите также

Метки документа и участники

Метки: 
Внесли вклад в эту страницу: kss555, boxa6, mdnwebdocs-bot, Gamesurf, Mingun
Обновлялась последний раз: kss555,