在Javascript中解析int的最佳方法

eme*_*esx 13 javascript type-conversion

可以通过多种方式将字符串转换为整数,例如

  • parseInt("-1",10)
  • Math.floor("-1")
  • Number("-1")
  • "-1"|0
  • ~~"-1"

我假设第一个是规范形式,但是例如使用第三个来强制整数.可能有更多方法可以做到这一点.

使用这些中的每个有什么区别和好处?哪个是最快的?

Den*_*ret 10

解析十进制int的规范方法是parseInt(str, 10).

关于其他方案:

  • parseInt("-1"):只有当你喜欢危险地生活时才使用它(有些浏览器认为"009"是小数,不是全部)
  • Math.floor("-1") :它可能是一个楼层,而不是一个int,但如果你想确定它是一个整数,那不是正确的方法
  • Number("-1"):也许你想要一个对象,这样你就可以调用没有升级的方法,你想确保没有垃圾(Number('3 flowers')==> NaN)
  • "-1"|0,~~"-1"以及隐式转换和二进制操作的其他组合:您喜欢代码高尔夫,并且不希望您的代码易于维护(对于那些想知道:二进制操作采用数字的整数部分).正如Blender在评论中指出的那样,这些解决方案不适合大(正或负)数字.

parseInt(str,10)除非您不需要确保字符串只包含int,否则不应使用其他解决方案.这是最快的解决方案,更重要的是,最具可读性.如果JS引擎做了一些优化,那么其他解决方案没有理由比这个更快.

  • 另外,对于大于'2 ^ 31 - 1`的所有数字,``n"| 0`和`~~"n"`失败(我认为小于'-2 ^ 31 - 1`. (6认同)