JavaScript中Number为parseInt提供命名空间的含义及差异疑问
问题解答
1. Number为parseInt()、parseFloat()提供命名空间是什么意思?
说白了就是把原本在全局作用域里的parseInt()和parseFloat()方法,挪到Number对象下面作为静态方法使用。
- 这么做是为了把和数字处理相关的API归到同一类下,让代码结构更清晰,同时减少全局作用域里的函数数量,避免出现命名冲突。
- 功能层面上,
Number.parseInt()和全局的parseInt()是完全相同的函数,调用结果没有区别,比如:Number.parseInt('234x', 10) // 和全局parseInt('234x',10)都返回234
2. 两种isFinite调用结果不同的原因?
核心差异在于是否自动转换参数类型:
- 全局
isFinite()函数:会先把传入的参数强制转换成数字类型,再判断这个数字是否是有限值。比如传入字符串'23',会先转成数字23,23是有限数,所以返回true。 Number.isFinite()方法:不会做类型转换,它只会判断传入的参数本身就是数字类型且是有限值。字符串'23'属于字符串类型,不是数字,所以直接返回false。- 再补两个例子对比:
Number.isFinite(23) // true(本身是数字且有限) isFinite('abc') // false(转成数字后是NaN,NaN不是有限值)
内容的提问来源于stack exchange,提问作者Sojin samuel
相关产品推荐
相关产品推荐

