.substr(0,1)或.charAt(0)之间有什么区别?

时间:2011-07-05 08:24:57

标签: javascript performance string

我们想知道thread当你想要获得第一个角色时,使用.substr(0,1)和使用.charAt(0)之间是否存在真正的差异(实际上,它可以适用于您只有一个字符的任何情况。

其中每一个都比另一个更快吗?

感谢您的回答!

最高

2 个答案:

答案 0 :(得分:16)

衡量它是关键!

转到http://jsperf.com/substr-or-charat进行自我评估。

substr(0,1)在我的机器上以每秒21,100,301次操作运行,charAt(0)每秒运行550,852,974次。

我怀疑charAt在内部将字符串作为数组访问,而不是拆分字符串。

如注释中所示,使用string [0]直接访问char比使用charAt(0)稍快一些。

答案 1 :(得分:5)

除非您的整个脚本基于快速字符串操作的需要,否则我根本不担心性能方面。我使用charAt()是因为它是可读的,也是该语言提供的最具体的工具。此外,substr()并非严格标准,虽然任何新的ECMAScript实现都不太可能省略它,但它可能会发生。基于标准的str.charAt(0)替代方案为str.substring(0, 1)str.slice(0, 1),而ECMAScript 5实施方案为str[0]