2020-12-25 圣诞节——ES5/ES6之Number.isFinite()及Number.isNaN()

首先祝大家圣诞节快乐,圣诞节的我依旧在学习代码中,最近看了不少关于程序员担心由于年龄的原因,自己的学习能力不如新人,由于长年累月的重复性工作,瓶颈无法提升,十分惆怅,而且生活压力大,身体也因为年轻时熬夜加班一天不如一天。35岁,程序员的门槛。然而在我看来,我是喜欢新鲜事物的人,学习前端主要原因是“喜欢”做好看的页面,可能会有人说:“欸,你真虚伪,直接说想要高工资不就得了,装啥呀。”额。。,有一说一,确实工资高是一方面,但是兴趣对我来说还是占主导。看了很多大厂的游戏官网主页,我就想着自己哪天也写一个就好了。不说了,开始学习!

ES6在Number对象上新提供了Number.isfinite()和Nubmer.isNaN()两个方法

1.Number.isfinite()用来检查一个数值是否为有限的(finite)
Number.isFinite(15); //true
Number.isFinite(0.8);//true
Number.isFinite(NAN);//false
Number.isFinite(Infinity);//false
Number.isFinite(-Infinity);//false
Number.isFinite('foo');//false
Number.isFinite('15');//false
Number.isFinite(true);//false

ES5 可以通过下面的代码部署Number.isFinite方法

(function(global){
  var global_isFinite = global.isFinite;
  Object.defineProperty(Number,'isFinite',{
    value:function isFinite (value){
      return typeof value ==='number' && global_isFinite(value);
    },
    configurable:true,
    enumerable:false,
    writable:true
  });
})(this);
2.Number,.isNaN()
Number.isNaN(NaN)//true
Number.isNaN(15)//false
Number.isNaN('15')//false
Number.isNaN(true)//false
Number.isNaN(9/NaN)//true
Number.isNaN('true'/0)//true
Number.isNaN('true'/'true')//true

ES5 可以通过下面的代码部署Number.isNaN()

(function(global){
  var global_NaN = global.isNaN;
  Object.defineProperty(Number,'isNaN',{
    value:function isNaN (value){
      return typeof value ==='number' && global_isNaN(value);
    },
    configurable:true,
    enumerable:false,
    writable:true
  });
})(this);

这两个新方法与传统的全局方法isFinite()和isNaN()的区别在于,传统方法先调用Number()将非数值转为数值,再进行判断,而新方法只对数值有效,对于非数值一律返回false。Number.isNaN()只有对于NaN才返回true,非NaN一律返回false。

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

推荐阅读更多精彩内容