NaN是个啥

含义

NaN是JavaScript的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。

5 - 'x' // NaN

上面代码运行时,会自动将字符串x转为数值,但是由于x不是数值,所以最后得到结果为·NaN·,表示它是“非数字”(NaN)。

另外,一些数学函数的运算结果会出现NaN

Math.acos(2) // NaN
Math.log(-1) // NaN
Math.sqrt(-1) // NaN
0/0           //NaN

这些计算在数学上本来就是错误的,所以计算结果返回NaN

注意: NaN 的数据类型仍然是number

typeof NaN
//"number"

神奇之处

NaN === NaN  // false

//NaN不等于任何值,包括它本身
Boolean(NaN) // false

//条件判断布尔运算时,NaN 被当做false
NaN + 1 // NaN
NaN - 1 // NaN
NaN * 1 // NaN
NaN / 1 // NaN

//NaN与任何数(包括它自己)的运算,得到的都是NaN。

判断NaN 的方法

  1. isNaN() ,判断一个数是否为NaN,返回 truefalse,但是只对数值有效,不是数值的参数会先转化成数值,当转化不了的时候就转成了NaN,所有这个方法判断不一定准确。
  2. 判断NaN更可靠的方法是,利用NaN是JavaScript之中唯一不等于自身的值这个特点,进行判断。
function myIsNaN(value) {
  return value !== value;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容