ECMAScript 2016 (ES7) 新特性之修复 parseInt() 在不一致的 radix 条件下的 bug

在过去,使用 parseInt() 方法时,如果要将一个字符串转换为整数,就需要传递一个基数参数。但如果基数参数和字符串中的数字不一致,就会出现意想不到的错误。

例如:

-------------- --- -- -- ---- ---- --------- -
-------------- ---- -- -- ----------- --

上述例子就展示了之前 parseInt() 方法中一个令人困惑的问题。为了解决这个问题,JavaScript 新增了在ES7的一个新特性。

ES7 对 parseInt() 的新特性

新特性就是在 parseInt() 方法中添加了第二个参数,用于指定该字符串的基数。

这个修复确保了 parseInt() 方法在默认情况下使用十进制数字,并且即使前面的数字字符串以“0”开头也会正常工作。

所以,我们之前的示例将会更好的。

-------------- --- -- ------- -
-------------- ---- -- ------- --

这个新特性的意义在于,让我们在使用 parseInt() 方法时不再受到低级错误的影响。除了整数字符串之外,还包括浮点数和科学计数法等数值类型,也能受到好的支持。

示例代码

下面是一个使用 parseInt() 方法来处理整数字符串的示例代码。

--- ------- - -----
--- --- - ----------------- ----

-- -------
------------------------- -
  ------------------------- -- -------- ---- - ------ ---------
- ---- -
  ------------------------- -------
-

输出结果如下:

---- -- ------ - -- ------

当第二个参数默认为10时,parseInt() 方法可将字符串正确解析为数字。同时,通过 Number.isInteger() 方法我们也能方便地判断该数字是否为整数。

结论

新特性的引入,也意味着我们可以更加方便地开发更加准确的 iOS/web 移动应用程序。对于正在从低级框架升级至 ES7 的开发者来说,修复 parseInt() 方法的 bug 将会是一个重要的进步。请使用这种新特性来提高程序的可靠性和准确性。

需要注意的是,如果传入的字符串无法中国而为整数,parseInt() 方法将返回 NaN。因此在实际开发中,应该特别注意使用 parseInt() 方法。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672f0fceeedcc8a97c8c5077