NaN的特点
- typeof是数字
- 我不等于我自己
- 不能被删除
严格判断NaN汇总
Number.isNaN
Number.isNaN: 判断一个值是否是数字,并且值等于NaN
Number.isNaN(NaN); // true
Number.isNaN(123); // false
Number.isNaN("abc"); // false
Number.isNaN(undefined); // false
Object.is
自身比较(利用NaN!==NaN的特性)
function isNaNVal(val) {
return val !== val;
}
typeof + NaN
有意思的陷阱
为什么会有这样的现象呢?
这是因为:
includes:调用内部的 Number::sameValueZero;
indexOf:调用内部的 Number::equal;
Numder::equal的es标准:
Number::sameValueZero的Es标准: