全局属性 `NaN` 的值表示不是一个数字（Not-A-Number）。

`NaN` 属性的属性特性：
writable | false
enumerable | false
configurable | false

## 语法

    NaN

## 描述

`NaN` 是一个全局对象的属性。

NaN 属性的初始值就是 NaN，和 `Number.NaN` 的值一样。在现代浏览器中（ES5中）， `NaN` 属性是一个不可配置（non-configurable），不可写（non-writable）的属性。但在ES3中，这个属性的值是可以被更改的，但是也应该避免覆盖。

编码中很少直接使用`到 NaN`。通常都是在计算失败时，作为 Math 的某个方法的返回值出现的（例如：`Math.sqrt(-1)`）或者尝试将一个字符串解析成数字但失败了的时候（例如：`parseInt("blabla")`）。

### 判断一个值是否是`NaN`

等号运算符（`==` 和 `===）` 不能被用来判断一个值是否是 `NaN`。必须使用 `Number.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

## 规范

Specification | Status | Comment
--- | --- | ---
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.3
ECMAScript 5.1 (ECMA-262) NaN | Standard |
ECMAScript 2015 (6th Edition, ECMA-262) NaN | Standard |
ECMAScript Latest Draft (ECMA-262) NaN | Draft |

## 浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

- Desktop
- Mobile

Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari
--- | --- | --- | --- | --- | ---
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes)

Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile
--- | --- | --- | --- | --- | --- | ---
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes)

## 相关链接

- `Number.NaN`
- `Number.isNaN()`
- `isNaN()`