sac*_*024 22 javascript foreach loops for-loop
我想知道:是否有之间的任何显著差异forEach
和for
循环在JavaScript中.
考虑这个例子:
var myArray = [1,2,3,4];
myArray.forEach(function(value) {
console.log(value);
});
for (var i = 0; i < myArray.length; i++) {
console.log(myArray[i]);
}
Run Code Online (Sandbox Code Playgroud)
以下是我研究的一部分:
例如:您想知道数字是否为素数.我认为使用for循环比使用forEach循环要容易得多.
我的问题是:
Lea*_*ema 18
forEach
是Array
原型上的一种方法.它遍历数组的每个元素并将其传递给回调函数.
所以基本上,forEach
是用例"将a的每个元素传递array
给a function
"的简写方法.这是一个常见的例子,我认为Array.forEach
与for
循环相比非常有用:
// shortcut for document.querySelectorAll
function $$(expr, con) {
return Array.prototype.slice.call((con || document).querySelectorAll(expr));
}
// hide an element
function hide(el) {
el.style.display = 'none';
}
// hide all divs via forEach
$$('div').forEach(hide);
// hide all divs via for
for (var divs = $$('div'), i = 0; i < divs.length; i++) {
hide(divs[i])
}
Run Code Online (Sandbox Code Playgroud)
如您所见,与for
循环相比,forEach语句的可读性得到了改进.
另一方面,for
语句更灵活:它不一定涉及数组.正常for
循环的性能稍好一些,因为没有涉及每个元素的函数调用.尽管如此,建议for
在将其作为forEach
语句编写时避免循环.
nai*_*sts 17
在forEach
循环中,您无法控制迭代数组的方式.经典的for
循环允许您根据需要选择迭代算法(i++
; i--
; i+=2*i
等).
但是,forEach
循环更容易使用 - 您不需要乱用所有i
计数,找到array[i]
对象 - JS为您完成.
>> sparseArray = [1, 2, , 4];
>> sparseArray.forEach(console.log, console);
1 0 [1, 2, 3: 4]
2 1 [1, 2, 3: 4]
4 3 [1, 2, 3: 4]
>> for(var i = 0; i < sparseArray.length; ++i) { console.log(sparseArray[i]) };
1
2
undefined
4
Run Code Online (Sandbox Code Playgroud)
forEach
最近在javascript中使表达式列表理解风格成为可能.在这里你可以看到forEach
跳过从未设置的元素,但是你可以用for
循环做的最好的是检查undefined
或者null
,这两个元素都可以被设置为值并被拾取forEach
.除非您期望缺少值,否则forEach
相当于for
循环,但请注意您无法提前停止,这是您需要的every
.