--- title: NaN slug: Web/JavaScript/Reference/Global_Objects/NaN tags: - JavaScript - NaN - Referencia - Változó translation_of: Web/JavaScript/Reference/Global_Objects/NaN ---
A globális NaN egy olyan változó, ami a Not-A-Number típusú értéket reprezentálja.
{{js_property_attributes(0,0,0)}}
A NaN a globális objektum része. Más szavakkal a globális scope egyik változója.
A NaN eredeti jelentése: Not-A-Number (nem szám). Értéke a {{jsxref("Number.NaN")}}-nal egyenlő. Modern böngészőkben a NaN nem beállítható, nem írható változó. Ellenkező esetben sem tanácsolt felüldefiniálni. A NaN közvetlen használata egy programban igen ritka.
Öt különböző típusú műveletet különböztethetünk meg, aminek az eredménye NaN:
parseInt("blabla") vagy Number(undefined))Math.sqrt(-1))NaN (pl.: 7 ** NaN)0 * Infinity, vagy undefined + undefined)"foo" / 3)A NaN nem összehasonlítható (az ==, !=, ===, és !== operátorokkal) semmilyen más értékkel. -- beleértve magát a NaN értéket. Ahhoz, hogy valamiről biztosan eldöntsük, hogy NaN a {{jsxref("Number.isNaN()")}}, illetve a {{jsxref("Global_Objects/isNaN", "isNaN()")}} függvényeket használhatjuk. Alternatívaként összehasonlíthatjuk a változót saját magával, mert a NaN, és csak is a NaN az az érték, ami nem egyenlő önmagával.
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
Number.isNaN(NaN); // true
function valueIsNaN(v) { return v !== v; }
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true
Fontos felhívni a figyelmet az isNaN() és a Number.isNaN() közötti különbséget: míg az előbbi true-val tér vissza akkor is, ha az érték éppen NaN, és akkor is ha az a kiértékelés után NaN-ná válik, úgy az utóbbi csak akkor tér vissza true-val, ha az érték éppen NaN:
isNaN('hello world'); // true
Number.isNaN('hello world'); // false
Továbbá, bizonyos tömbfüggvények nem használhatók a NaN keresésére, míg vannak, amik igen.
let arr = [2, 4, NaN, 12]; arr.indexOf(NaN); // -1 (false) arr.includes(NaN); // true arr.findIndex(n => Number.isNaN(n)); // 2
| Specifikáció |
|---|
| {{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}} |
{{Compat("javascript.builtins.NaN")}}