最近在学习ES6,关于数值扩展这有点疑问。
ES6在Number对象上提供两个方法:Number.isFinite() 和 Number.isNaN()
与ES5不同在于取消了先调用一次Number()将非数值转化为数值后再判断。
注意:两个方法与传统的 isFinite() 和 isNaN() 方法区别在于,传统方法先调用 Number() 将非数值的值转为数值,再判断。这两个方法只对数值有效,非数值一律返回 false。
不太理解为什么要这么做,我觉得先调用一次Number()将非数值转化为数值后再判断不是应该更好吗?
phpcn_u15822017-05-18 10:54:30
可以看看MDN的描述
而isFinite的你可以比较下Number.isFinite(true)和isFinite(true)就知道了。当然,Number.isFinite("")和isFinite("")也可以。
黄舟2017-05-18 10:54:30
这两个功能是Number上判断一个数值是否为有限的,或者是否为NaN,前提是数字,如果将string等内部暗操作转化成数字,就失去其本身所要直接表达的含义,还有带来一些其它问题,就变成不仅仅可以判断数字,也可以判断string等类型。
参考链接:
es6
isNaN