window.isNaN的判断问题

2020-08-06  本文已影响0人  零穆

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;
   };

}
上一篇 下一篇

猜你喜欢

热点阅读