window.isNaN的判断问题

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

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。