我想知道:在
JavaScript中forEach和for循环之间有什么显着的区别.
考虑这个例子:
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]); }
这是我研究的一部分:
>性能:根据JsPerf:for Each比循环慢一点.
>可用性:在forEach循环的情况下,我们无法从回调中断/返回.
例如:你想知道一个数字是否为素数.我认为使用for循环比使用forEach循环要容易得多.
>可读性:使用for循环使代码比代码中的forEach更易读.
>浏览器兼容性:forEach不支持IE<所以我们的代码中引入了一些垫片.
我的问题是:
>每个循环的优点有哪些?
>在什么情况下,forEach是更可取的.
为什么甚至进入JavaScript?为什么需要它?
解决方法
forEach
是
Array
原型的一种方法.它遍历数组的每个元素,并将其传递给回调函数.
因此,基本上,forEach
是用例将“将数组的每个元素传递给函数”的简写方法.这里有一个常见的例子,我认为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]) }
如您所见,与for循环相比,forEach语句的可读性得到改善.
另一方面,for语句更灵活:它不一定涉及数组.正常循环的性能稍好一点,因为每个元素都没有函数调用.尽管如此,建议在可以将其写入forEach语句时避免使用循环.