ECMA-262v4為本地數組對像新增加了一個forEach方法。此方法遍歷一個數組的所有成員,並且在每個成員上執行一個函數。在每個元素上執行的函數作為forEach的參數傳進去,並在調用函數時接收3個參數:數組項的值、數組項的索引、數組自身。例如:
items.forEach(function(value,index,array){
process(value);
});
forEach在Firefox、Chrome和Safari等瀏覽器中為原生函數。另外,forEach在大多數JavaScript庫中都有等價實現,例如:
//YUI 3
Y.Array.each(items,function(value,index,array){
process(value);
});
//jQuery
jQuery.each(items,function(index,value){
process(value);
});
//Dojo
dojo.forEach(items,function(value,index,array){
process(value);
});
//Prototype
items.each(function(value,index){
process(value);
});
儘管基於函數的迭代使用起來非常便利,但是比基於循環的迭代要慢一些。每個數組項要關聯額外的函數調用是造成速度慢的主要原因。在所有情況下,基於函數的迭代佔用時間是基於循環的迭代的8倍,因此在非特殊需求下,不建議使用函數迭代。