粘贴过来的源码实现:是有问题的!foreach并不能通过回调的形参来改变原数组,可以加上深拷贝一下。大体实现思想如下:
var arr = [1, 2, 3, 4, 5]
Array.prototype.myForEach = function(fn){
var len = this.length;
for(var i = 0; i < len; i ++){
//将元素传给回调函数
fn(this[i],i);
}
}
arr.myForEach(function (ele, index){
console.log(ele, index);
})
便于理解结束foreach循环:
1:break; continue; 直接不能用,因为是在回调函数里面。
2:return; 只能结束一次,结束一次回调的传入执行。
正确:只能抛错强行结束
try {
var array = ["第一","第二","第三","第四"];
// 执行到第3次,结束循环
array.forEach(function(item,index){
if (item == "第三") {
throw new Error("第三");
}
console.log(item);// 第一 第二
});
} catch(e) {
if(e.message!="第三") throw e;
};