在过去,使用 parseInt()
方法时,如果要将一个字符串转换为整数,就需要传递一个基数参数。但如果基数参数和字符串中的数字不一致,就会出现意想不到的错误。
例如:
parseInt('10', 8); // 输出 8,因为 '10' 在八进制中表示的是 8 parseInt('10', 10); // 输出 10,正常情况下应该是 10
上述例子就展示了之前 parseInt() 方法中一个令人困惑的问题。为了解决这个问题,JavaScript 新增了在ES7的一个新特性。
ES7 对 parseInt()
的新特性
新特性就是在 parseInt() 方法中添加了第二个参数,用于指定该字符串的基数。
这个修复确保了 parseInt() 方法在默认情况下使用十进制数字,并且即使前面的数字字符串以“0”开头也会正常工作。
所以,我们之前的示例将会更好的。
parseInt('10', 8); // outputs 8 parseInt('10', 10); // outputs 10
这个新特性的意义在于,让我们在使用 parseInt()
方法时不再受到低级错误的影响。除了整数字符串之外,还包括浮点数和科学计数法等数值类型,也能受到好的支持。
示例代码
下面是一个使用 parseInt() 方法来处理整数字符串的示例代码。
-- -------------------- ---- ------- --- ------- - ----- --- --- - ----------------- ---- -- ------- ------------------------- - ------------------------- -- -------- ---- - ------ --------- - ---- - ------------------------- ------- -
输出结果如下:
'10' 作为 number 值 10 解析后为整数
当第二个参数默认为10时,parseInt()
方法可将字符串正确解析为数字。同时,通过 Number.isInteger()
方法我们也能方便地判断该数字是否为整数。
结论
新特性的引入,也意味着我们可以更加方便地开发更加准确的 iOS/web 移动应用程序。对于正在从低级框架升级至 ES7 的开发者来说,修复 parseInt() 方法的 bug 将会是一个重要的进步。请使用这种新特性来提高程序的可靠性和准确性。
需要注意的是,如果传入的字符串无法中国而为整数,parseInt()
方法将返回 NaN
。因此在实际开发中,应该特别注意使用 parseInt() 方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672f0fceeedcc8a97c8c5077