在目前为止我尝试过的所有浏览器(Firefox,Chrome,Edge)中,执行以下操作的速度要快得多:
str.charAt(0)
比我发现的另外两种方法可以完成同样的事情:
str[0]
str.substring(0, 1)
虽然我能理解.substring()明显更慢(速度的10%),但不是[]
(速度的75%),字符串只是.charAt()
的不同语法?
答案 0 :(得分:2)
使用索引并将字符串视为数组曾经是首选方法。 charAt
仅在ES5中引入,在IE9之前,您必须使用string[index]
。 charAt
方法是推荐使用的更简洁的方法,除非您需要支持旧浏览器。
据推测,它的速度来自于它的可预测性,浏览器可以比使用索引查找更好地优化它。但正如您在基准测试中所看到的,浏览器都会以不同的方式优化事物。
您会在不同的浏览器中看到不同的数字。在Chrome中,charAt
速度更快,但在Microsoft Edge和Internet Explorer中速度相当慢,[index]
胜出(特别是在IE11中)。查看this JSPerf test并在不同的浏览器中运行。
除非你正在处理数以亿计的字符串,否则你不会注意到使用任何一个字符串的任何减速。在Chrome中,速度差异只是一个百分比的一小部分。