--- title: NaN slug: Web/JavaScript/Reference/Global_Objects/NaN tags: - JavaScript - Property - Reference translation_of: Web/JavaScript/Reference/Global_Objects/NaN ---
Глобальное свойство NaN
является значением, представляющим не-число (Not-A-Number).
{{EmbedInteractiveExample("pages/js/globalprops-nan.html")}}
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 (не-число) — то же самое значение, что и у {{jsxref("Number.NaN")}}. В современных браузерах NaN
является ненастраиваемым и незаписываемым свойством. Даже когда это не так, избегайте его переопределения.
В программах NaN
используется довольно редко. Это возвращаемое значение в ситуациях, когда математические ({{jsxref("Math")}}) функции не срабатывают должным образом (например, при вызове Math.sqrt(-1)
) или когда функция, пытающаяся считать число из строки, терпит неудачу по причине того, что в строке не число (parseInt('blabla')
).
NaN
NaN
является неравным (посредством сравнения через ==
, !=
, ===
, and !==
) любому другому значению, включая другое значение NaN. Используйте {{jsxref("Number.isNaN()")}} или {{jsxref("Global_Objects/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
Спецификация | Статус | Комментарии |
---|---|---|
{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES6', '#sec-value-properties-of-the-global-object-nan', 'NaN')}} | {{Spec2('ES6')}} | |
{{SpecName('ES5.1', '#sec-15.1.1.1', 'NaN')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES1')}} | {{Spec2('ES1')}} | 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.
{{Compat("javascript.builtins.NaN")}}