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

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

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

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

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

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

阅读 4k
2 个回答

可以看看MDN的描述

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

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

es6
isNaN

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题