为什么这种迭代方法更快?

时间:2017-01-27 21:00:44

标签: javascript performance

我的问题相对简单。但我怀疑答案是复杂而有趣的。我有两个在Javascript中迭代循环的片段。

代码段A:

//Fast
var l = arr.length;
for (var x = 0; x < l; x++) {
    dosmth = arr[x];
}

摘录B:

//Very Fast
var l = arr.length;
var x = 0;
while (x>l) {
    dosmth = arr[x];
    x++;
}

Snippet B明显快于摘录A.为什么会这样?我怀疑这是因为代码段A中有更多的范围或上下文更改。但我找不到任何文档。

2 个答案:

答案 0 :(得分:3)

为了扩展我的评论,后者可能没有进行任何迭代,因为检查被翻转。在第一个你要检查x&lt; l和第二个x>升。

答案 1 :(得分:1)

您错过了一个稍微快一点的版本,其中包含一个变量和一个隐式检查,但它会向后运行。

var i = array.length;
while (i--) {
    dosmth = arr[x];
}