我刚安装了Aptana Studio进行开发,其中一个可用的Javascript命令就是这样插入一个for循环:
for (var i=0; i < Things.length; i++) {
Things[i]
};
另一个选项是Insert improved for loop:
for (var i = Things.length - 1; i >= 0; i--){
Things[i]
};
为什么最后一个比第一个好?
答案 0 :(得分:12)
// ( A ) ( B ) (C)
for (var i=0; i < Things.length; i++) {
Things[i]
};
Things
的长度属性每一次迭代。)也就是说,通过更改循环获得的性能很小,而且您可能会牺牲部分可读性,因此请坚持使用您认为最具可读性的内容 - 而不是最正确的性能。
这对你来说更有意义:
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
}
答案 1 :(得分:5)
因为每次(每次迭代)都没有评估Things.length的结果。它刚刚在开始时分配一次,并从那时开始使用。除此之外,迭代次数显然是相同的。
真的是微观优化。你会发现在我认为的代码中可以优化更多有趣的东西。
答案 2 :(得分:4)
那怎么样?
this._getFormFields(this.byId("newEntitySimpleForm"));
更新
对不起,英语不是我的母语。所以我不知道如何与你们开始对话。无论如何,这里是Youtube网址,我从该视频中了解到。我希望这对你有帮助。它解释了原因!
https://spark.apache.org/docs/1.3.0/sql-programming-guide.html
答案 3 :(得分:1)
我猜第二个你只能访问Things.length
一次(初始化i
时)你在第一个访问它的地方每次都要检查你是否在那里