es6 之前
??isNaN(..) 有一个严重的缺陷,它的检查方式过于死板,就是“检查参数是否不是 NaN,也不是数字”。但是这样做的结果并不太准确:
window.isNaN( NaN ); // true
window.isNaN( 'b'); // true——晕!
??很显然‘b’并不是一个数字也不是NaN
,但是 isNaN 对于这些判断都是true。
es6 之后
??es6之后,始我们可以使用工具函数 Number.isNaN(..),这个阔以很好的去判断是不是NaN。
Number.isNaN( NaN ); // true
Number.isNaN( 'b'); // false——正确
??NaN 是 JavaScript 中唯 一一个不等于自身的值,利用这点我们阔以很好的去写ES6 之前的浏览器的 polyfill,如下:
if (!Number.isNaN) {
Number.isNaN = function(n) {
return n !== n;
};
}