Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. isNaN

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

isNaN

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

Аннотация

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

Синтаксис

isNaN(значение)

Параметры

Значение

Литерал или переменная которые будут проверяться на нечисловое значение.

Описание

Для чего нужна функцияisNaN?

В отличие от других возможных значениях в JavaScript, при работе с значением данного типа невозможно полагаться на == и === для определения, является ли переменная или литерал нечисловым значением (NaN) или нет, так как проверкиNaN == NaN иNaN === NaNв качестве значения вернутfalse. Следовательно, для проверки нужна функцияisNaN.

Примечание

Для альтернативной проверки переменной на NaN без использования функции isNaN() можно воспользоваться конструкцией x !== x

var x = NaNx != x // truex !== x // true

Генерация значенияNaN

ЗначениеNaN генерируются арифметическими операциями, результатом которых являетсяundefined илиunrepresentable. Такие условия не обязательно обозначают переполнение стека.NaN также может являться результатом попытки преобразования числа в строку, или значения, не имеющего эквивалента в простых числовых примитивах.

Например, деление нуля на нуль возвращаетNaNно деление других чисел на 0 не возвращает NaN.

var x = NaNx != x // truex !== x // true

Особенности поведения

С самых ранних версий функцииisNaN её поведение для не числовых переменных или литералов было довольно-таки запутанным. Когда аргументом функцииisNaN является переменная, тип которой неNumber, она преобразуется к типуNumber. Полученное значение затем проверяется, является ли оноNaN. Таким образом для не числовых значений, которые можно преобразовать в числовой тип без не-NaN значения (в частности, пустая строка или логические примитивы, которые преобразуются в 0 или 1), возвращаемое значение "false" может быть полной неожиданностью; пустая строка преобразуется в "not a number." Путаница связана с тем, что "not a number" имеет определённое значение, описанное в стандарте IEEE-794 чисел с плавающей точкой. Функцию стоит воспринимать в качестве ответа на вопрос, "Является ли это значение корректным числом по стандарту IEEE-794?"

В следующей версии ECMAScript (ES6) функцияNumber.isNaN() также присутствует.Number.isNaN(x) будет надёжным методом для проверки, содержит лиx значениеNaN или нет. Даже сNumber.isNaN, однако, результатомNaN остаётся точное числовое значение, а не просто "not a number".

Пример

js
isNaN(NaN); // trueisNaN(undefined); // trueisNaN({}); // trueisNaN(true); // falseisNaN(null); // falseisNaN(37); // false// stringsisNaN("37"); // false: "37" преобразуется в число 37 которое не NaNisNaN("37.37"); // false: "37.37" преобразуется в число 37.37 которое не NaNisNaN(""); // false: пустая строка преобразуется в 0 которое не NaNisNaN(" "); // false: строка с пробелом преобразуется в 0 которое не NaNisNaN("37,5"); // true// ДатыisNaN(new Date()); // falseisNaN(new Date().toString()); // true// Пример почему использование isNaN не всегда уместноisNaN("blabla"); // true: "blabla" преобразовано в число.// При парсинге преобразуется в число при неудаче возвращает NaN

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-isnan-number

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

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

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp