在我迄今为止尝试过的所有浏览器(Firefox、Chrome、Edge)中,执行以下操作的速度要快得多:
str.charAt(0)
与我发现的其他两种方法相比,可以完成同样的事情:
str[0]
str.substring(0, 1)
虽然我可以理解 .substring() 明显较慢(速度的 10%),但 []
(速度的 75%)与字符串只是 的不同语法.charAt()
?
最佳答案
使用索引并将字符串视为数组曾经是首选方法。 charAt
仅在 ES5 中引入,在 IE9 之前,您必须使用 string[index]
。 charAt
方法是推荐使用的更简洁的方法,除非您需要支持较旧的浏览器。
据推测,它的速度来自于它的可预测性,并且浏览器可以比使用索引查找更好地优化它。但正如您在基准测试中看到的那样,浏览器的优化方式各不相同。
您将在不同的浏览器中看到截然不同的数字。在 Chrome 中,charAt
速度更快,但在 Microsoft Edge 和 Internet Explorer 中,速度要慢得多,[index]
胜出(尤其是在 IE11 中)。查看this JSPerf test并在不同的浏览器中运行它。
除非您正在处理数亿个字符串,否则您不会注意到使用任一选项都会导致速度变慢。在 Chrome 中,速度差异尤其是百分之几。
关于javascript - 为什么使用 str.chatAt(0) 而不是 str[0] 是一种优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961343/