谁能解释一下这两个循环之间的区别
Can anyone explain me the difference between these two loopings?
http://jsperf.com/jquery-each-vs-for-loop/108
for (var b = a[0], len = a.length; len; b = a[--len]) {
newArray.push(
b
);
}
和
for (var i = 0, len = a.length; i < len; i++) {
newArray.push(
a[i]
);
}
- 根据jsref的说法,它说第一个更快。 为什么?
- 谁能解释一下与传统方式相比它的 for 循环是什么?
你的第一个例子只是做了一些非常不同的事情。看看吧:
var a = [1,2,3,4],
newArray = [];
for (var b = a[0], len = a.length; len; b = a[--len]) {
newArray.push(b);
}
> newArray
[1, 4, 3, 2]
您的第二个示例会产生预期的[1, 2, 3, 4]
。
如果您需要了解算法,将for
表示法转换为 while-循环并扩展递减和递增运算符时可能会更容易:
/* first example */
var b = a[0],
len = a.length;
while (len) {
newArray.push(b);
len = len-1;
b = a[len];
}
/* second example */
var i = 0,
len = a.length;
while (i < len) {
newArray.push( a[i] );
i = i+1;
}
我认为第一个循环的主要收益是a
被缓存在len
中,然后用作单个布尔值:通过简化循环条件可以获得一点时间。然而!它不会生成与输出相同的数组。
假设你在 a 中有十个元素:[0,1,2,3,4,5,6,7,8,9] - 循环将首先处理 a[0],然后处理 a[--len],在我们的示例中是 a[9]。您的最终结果将是 newArray = [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]。
所以为什么它更快并不重要,因为它在做错误的事情。
相关文章:
- 基于两个条件退出While循环
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 一个ajax循环有两个输出错误innerHTML
- 从两个基于0的for循环迭代器中获取单个基于0的索引的公式
- 两个循环JS函数相互冲突
- 识别两个文本中的单词(if 语句在 for 循环中)
- 如何在 JavaScript 中减少两个循环以提高效率
- 无法从 .each 循环加载谷歌地图上的两个标记
- 如何完成此循环?连接前面的两个字符
- 同时换掉两个Div,换成另一个Div并保持循环一段固定的秒数
- 两个不同的循环-都是don'不起作用
- 两个代码之间的区别是什么(javascript的循环)
- 一次两个对象的 JQuery 淡入淡出循环
- 是否可以让 DUST 模板循环和交错来自两个不同数组的元素
- 在 javascript 函数 javascript 动画中使用两个 for 循环
- 两个循环性能差异.交换内环和外环
- 具有两个条件的 while 循环仅检查一个
- 虽然循环多个条件不会同时检查这两个条件
- 同时循环两个jQuery对象
- 需要循环两个循环,并在内部循环中使用延迟迭代