13

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

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

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

使用这些有什么区别和好处?预计哪个最快?

4

2 回答 2

10

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

关于其他解决方案:

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

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

于 2013-06-03T18:01:02.457 回答
3

一元加法呢?它看起来像是专门为类型转换而设计的。

+"-1" // -1
于 2015-02-19T15:43:28.833 回答