为什么使用str.chatAt(0)而不是str [0]进行优化?

时间:2017-07-07 01:48:16

标签: javascript optimization

在目前为止我尝试过的所有浏览器(Firefox,Chrome,Edge)中,执行以下操作的速度要快得多:

str.charAt(0)

比我发现的另外两种方法可以完成同样的事情:

str[0]
str.substring(0, 1)

虽然我能理解.substring()明显更慢(速度的10%),但不是[](速度的75%),字符串只是.charAt()的不同语法?

1 个答案:

答案 0 :(得分:2)

使用索引并将字符串视为数组曾经是首选方法。 charAt仅在ES5中引入,在IE9之前,您必须使用string[index]charAt方法是推荐使用的更简洁的方法,除非您需要支持旧浏览器。

据推测,它的速度来自于它的可预测性,浏览器可以比使用索引查找更好地优化它。但正如您在基准测试中所看到的,浏览器都会以不同的方式优化事物。

您会在不同的浏览器中看到不同的数字。在Chrome中,charAt速度更快,但在Microsoft Edge和Internet Explorer中速度相当慢,[index]胜出(特别是在IE11中)。查看this JSPerf test并在不同的浏览器中运行。

除非你正在处理数以亿计的字符串,否则你不会注意到使用任何一个字符串的任何减速。在Chrome中,速度差异只是一个百分比的一小部分。