在foreach中增長數組元素,不會致使循環增長,循環次數仍是原來數組的長度。數組
var arr=[1,2,3]; arr.forEach((item)=>{ if(item==2){ arr.push(7); arr.push(8); } console.log(item); }); console.log(arr.length);
結果是:1,2,3,5
,新增的七、8元素並無被循環,可是數組的長度確實是增長了。code
和增長不一樣的是,中數組中減小元素卻會減小循環次數,而且刪除的元素後面的元素會被「跳過」it
var arr=[1,2,3]; arr.forEach((item)=>{ if(item==2){ arr.splice(1,1); } console.log(item); }); console.log(arr.length);
輸出的結果:1,2,2
console
第二個被刪除了,長度已經變成了2,因此循環到第二次就中止了,致使第三個元素沒被循環,發生「跳過」現象。但因爲刪除時,獲取到的當前元素已是第二個,因此輸出的仍是2.