javascript - 为什么使用 str.chatAt(0) 而不是 str[0] 是一种优化?

标签 javascript optimization

在我迄今为止尝试过的所有浏览器(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/

相关文章:

javascript - html - 自动缩放到不同的显示器尺寸

optimization - 现代优化编译器如何确定何时优化?

mysql - 需要刷新表吗?

php - 如何将 php 变量的值分配给 javascript 变量

javascript - 完整日历: format title as link

JavaScript 错误 : ReferenceError: edit is not defined edit(this);

javascript - 使用 Jquery 格式化日期的内置功能

php - 寻找 CSS 优化器(php 脚本或在线服务)

python - 如何使用 Pulp Gekko 和 Scipy 包修复具有不同结果的线性优化问题的代码?

algorithm - 子集和变化 : Get as many subset sums as possible