我刚刚安装了用于开发的 Aptana Studio,Javascript 的可用命令之一是像这样插入一个 for 循环:
for (var i=0; i < Things.length; i++) {
Things[i]
};
另一种选择是插入改进的 for 循环,如下所示:
for (var i = Things.length - 1; i >= 0; i--){
Things[i]
};
为什么最后一个比第一个好?
我刚刚安装了用于开发的 Aptana Studio,Javascript 的可用命令之一是像这样插入一个 for 循环:
for (var i=0; i < Things.length; i++) {
Things[i]
};
另一种选择是插入改进的 for 循环,如下所示:
for (var i = Things.length - 1; i >= 0; i--){
Things[i]
};
为什么最后一个比第一个好?
// ( A ) ( B ) (C)
for (var i=0; i < Things.length; i++) {
Things[i]
};
Things
在每次迭代时检查 length 属性。)也就是说,您从更改循环中获得的性能是最小的,并且您可能会牺牲部分可读性,因此请坚持使用您认为最可读的内容 - 而不是最正确的性能。
这可能对您更有意义:
for (var i=0; i < Things.length; i++) {
Things[i] = null;
};
可以改写如下:
var i = 0; //A
while (true) {
if (!(i < Things.length)) { //B - We check the length all the time
break;
}
Things[i] = null;
i++; //C
}
和
for (var i = Things.length - 1; i >= 0; i--){
Things[i] = null;
};
可以改写如下:
var i = Things.length - 1; //A - We only check the length once
while (true) {
if (!(i >= 0)) { //B
break;
}
Things[i] = null;
i--; //C
}
因为 Things.length 的结果不是每次都被评估(在每次迭代中)。它只是在开始时分配一次并从那时起使用。除此之外,迭代次数显然是相同的。
它真的是一个微优化。我想你会在你的代码中找到更多有趣的东西来优化。
那个怎么样?
for (var i = 0, len = things.length; i < len; i += 1) {
// something
}
更新:
对不起,英语不是我的母语。所以我不知道如何与你们开始对话。不管怎样,这里是 Youtube URL,我从那个视频中学到了。我希望这对你有帮助。它解释了为什么!
我猜第二个你只能访问Things.length
一次(初始化时i
),而第一个你每次都访问它以检查你是否在那里。