天天看點

JS程式設計建議——22:少用函數疊代

建議22:少用函數疊代

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){

//jQuery

jQuery.each(items, function(index, value){

//Dojo

dojo.forEach(items, function(value, index, array){

//Prototype

items.each(function(value, index){

盡管基于函數的疊代使用起來非常便利,但是比基于循環的疊代要慢一些。每個數組項要關聯額外的函數調用是造成速度慢的主要原因。在所有情況下,基于函數的疊代占用時間是基于循環的疊代的8倍,是以在非特殊需求下,不建議使用函數疊代。

繼續閱讀