我的问题相对简单。但我怀疑答案是复杂而有趣的。我有两个在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中有更多的范围或上下文更改。但我找不到任何文档。
答案 0 :(得分:3)
为了扩展我的评论,后者可能没有进行任何迭代,因为检查被翻转。在第一个你要检查x&lt; l和第二个x>升。
答案 1 :(得分:1)
您错过了一个稍微快一点的版本,其中包含一个变量和一个隐式检查,但它会向后运行。
var i = array.length;
while (i--) {
dosmth = arr[x];
}