--- 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")}}