判断NaN汇总

83 阅读1分钟

NaN的特点

  1. typeof是数字
  2. 我不等于我自己
  3. 不能被删除

image.png

严格判断NaN汇总

Number.isNaN

Number.isNaN: 判断一个值是否是数字,并且值等于NaN

Number.isNaN(NaN); // true
Number.isNaN(123); // false
Number.isNaN("abc"); // false
Number.isNaN(undefined); // false

Object.is

image.png

自身比较(利用NaN!==NaN的特性)

function isNaNVal(val) {
    return val !== val;
}

typeof + NaN

image.png

有意思的陷阱

image.png

为什么会有这样的现象呢?

这是因为:

includes:调用内部的 Number::sameValueZero;

indexOf:调用内部的 Number::equal;

Numder::equal的es标准:

image.png

Number::sameValueZero的Es标准:

image.png