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

JMa*_*Max 13 javascript string performance

我们想知道在这个帖子中,如果你想获得第一个字符的使用.substr(0,1)和使用之间存在真正的区别.charAt(0)(实际上,它可以适用于你只想要一个字符的任何情况).

每个中的任何一个比另一个快吗?

谢谢你的回答!

马克斯

Ric*_*haw 16

测量它是关键!

访问http://jsperf.com/substr-or-charat自己进行基准测试.

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

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

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


Tim*_*own 5

除非您的整个脚本都基于执行快速字符串操作的需求,否则我完全不会担心性能方面的问题。我会charAt()基于它的可读性以及该语言提供的最具体的工具来使用它。同样,substr()它也不是严格的标准,尽管任何新的ECMAScript实现都不太可能忽略它,但它可能发生。基于标准的替代品str.charAt(0)str.substring(0, 1)str.slice(0, 1),和ECMAScript的5实现,str[0]