{{JSObjectsQLAlpha()}}
Summary
The global NaN
property is a value representing Not-A-Number.
{{js_property_attributes(0,0,0)}}
Syntax
NaN
Description
NaN
is a property of the global object.
The initial value of NaN
is Not-A-Number — the same as the value of Number.NaN
. In modern browsers, NaN
is a non-configurable, non-writable property. Even when this is not the case, avoid overriding it.
It is rather rare to use NaN
in a program. It is the returned value when Math functions fail (Math.sqrt(-1)
) or when a function trying to parse a number fails (parseInt("blabla")
).
Testing against NaN
Equality operator (==
and ===
) cannot be used to test a value against NaN
. Use {{jsxref("Number.isNaN()")}} or {{jsxref("Global_Objects/isNaN", "isNaN()")}} instead.
NaN === NaN; // false Number.NaN === NaN; // false isNaN(NaN); // true isNaN(Number.NaN); // true
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition. | Standard | Initial definition. Implemented in JavaScript 1.3 |
{{SpecName('ES5.1', '#sec-15.1.1.2', 'Infinity')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}} | {{Spec2('ES6')}} |
Browser compatibility
{{ CompatibilityTable() }}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
See also
- {{jsxref("Number.isNaN()")}}
- {{jsxref("Global_Objects/isNaN", "isNaN()")}}