搜索

首页  >  问答  >  正文

JavaScript ES6 中 Number.isFinite() 和 Number.isNaN()

最近在学习ES6,关于数值扩展这有点疑问。

ES6在Number对象上提供两个方法:Number.isFinite()Number.isNaN()

与ES5不同在于取消了先调用一次Number()将非数值转化为数值后再判断。

注意:两个方法与传统的 isFinite() 和 isNaN() 方法区别在于,传统方法先调用 Number() 将非数值的值转为数值,再判断。这两个方法只对数值有效,非数值一律返回 false。

不太理解为什么要这么做,我觉得先调用一次Number()将非数值转化为数值后再判断不是应该更好吗?

巴扎黑巴扎黑2752 天前565

全部回复(2)我来回复

  • phpcn_u1582

    phpcn_u15822017-05-18 10:54:30

    可以看看MDN的描述

    而isFinite的你可以比较下Number.isFinite(true)和isFinite(true)就知道了。当然,Number.isFinite("")和isFinite("")也可以。

    回复
    0
  • 黄舟

    黄舟2017-05-18 10:54:30

    这两个功能是Number上判断一个数值是否为有限的,或者是否为NaN,前提是数字,如果将string等内部暗操作转化成数字,就失去其本身所要直接表达的含义,还有带来一些其它问题,就变成不仅仅可以判断数字,也可以判断string等类型。
    参考链接:

    es6
    isNaN

    回复
    0
  • 取消回复