在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.