什么是NaN

NaN 是 not a number 的缩写,代表非数字值的特殊值,该属性用于指示某个值不是数字,是一个全局对象的属性

它有什么特别之处呢?

  1. NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样
  2. 在现代浏览器中(ES5),NaN是一个不可配置(non-configurable),不可写(non-writable)的属性.但是在ES3中,这个属性的值是可以更改的,但是也应该避免覆盖
  3. 编码中很少直接用到 NaN ,通常都是计算失败的时候,作为Math的某个方法的返回值出现(例如:Math.sqrt(-1)),或者尝试将一个字符串解析成为数字,但是失败了的时候(parseInt("blabla")).
  4. NaN和任何值比较,都不相等,包括它自己
  5. NaN是number类型 typeof NaN //'number'

判断一个值是否是NaN

  • == 或 === 等号运算符不能用来判断一个值是否是 NaN,必须使用Number.isNaN( )或者 isNaN( )函数
 NaN ===  NaN   //false
 Number.NaN === Number.NaN   //false
 isNaN(NaN)    // true
 isNaN(Number.NaN)   //true

你可能感兴趣的:(什么是NaN)