--- title: NaN slug: Web/JavaScript/Reference/Global_Objects/NaN tags: - JavaScript - Властивість - Довідка translation_of: Web/JavaScript/Reference/Global_Objects/NaN ---
Глобальна властивість NaN - це значення, що служить для відображення "не числа" (Not-A-Number).
{{js_property_attributes(0,0,0)}}
Джерело цих інтерактивних прикладів зберігається у репозиторії на GitHub. Якщо ви маєте бажання зробити свій внесок у проект інтерактивних прикладів - будь ласка, зклонуйте репозиторій https://github.com/mdn/interactive-examples та пришліть нам pull request.
NaN є властивістю глобального об'єкта. Іншими словами, це змінна глобальної області видимості.
Початковим значенням NaN є "не число" — так само, як і значення {{jsxref("Number.NaN")}}. У сучасних переглядачах NaN — це властивість, недоступна для запису та налаштування. Навіть якщо у вашому випадку це не так, уникайте її перевизначення. У програмах NaN застосовується досить рідко.
Існує п'ять різних типів операцій, що повертають NaN:
parseInt("blabla") чи Number(undefined))Math.sqrt(-1))7 ** NaN)Infinity)NaNNaN не дорівнює (через ==, !=, === та !==) будь-якому значенню, в тому числі іншому значенню NaN. Використовуйте {{jsxref("Number.isNaN()")}} або {{jsxref("Global_Objects/isNaN", "isNaN()")}}, щоб якнайточніше визначити, чи значення є 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('привіт'); // повертає 'true'.
Number.isNaN('привіт'); // повертає 'false'.
Додатково, деякі методи масивів не знаходять NaN, в той час, як інші знаходять.
let arr = [2, 4, NaN, 12]; arr.indexOf(NaN); // -1 (false) arr.includes(NaN); // true arr.findIndex(n => Number.isNaN(n)); // 2
| Специфікація |
|---|
| {{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}} |
{{Compat("javascript.builtins.NaN")}}