forEach()和map()都是遍歷數組的方法,用法類似,但是還是有很大區別:
相同點:
1.都是循環遍歷數組中的每一項;
2.在遍歷中執行匿名函數都可以接收三個參數,分別為:遍歷過程的每一項、遍歷序號(索引值)、原數組;
3.執行的匿名函數中 的this都指向window。
不同點:
map():
根據遍歷執行的匿名函數,對於原數組中的每個值產生一個對應的值,並返回一個新的數組,存在一個映射關系,並且不會改變原數組,不會對空數組進行檢測。
var arr = [0,1,2,3,4];
var str = arr.map(function(i,index,arr){
console.log(this);
return ++i;
},this);
console.log(str); //結果為 [1,2,3,4,5]
forEach():只是按照順序把數組中的元素傳遞給forEach中的匿名函數使用,對於空數組則不會調用到匿名函數。
var arr = [0,1,2,3,4];
var sum = 0;
var str = arr.forEach(function(i,index,arr){
sum += i;
console.log("sum的值為:",sum);
}) //執行5次,最終結果 10