本质上 我们的 callback 执行在一个循环中
当前 callbak 中断,并不影响循环执行后续的callback
如果这样理解不明朗 我们手动模拟实现一个foreach
实现一个foreach
我们实现一个自己的forech,代码逻辑很简单
foreach是一个高阶函数
arr.forEach(回调函数(元素 [, 下标 [, 被操作数组]])[, 绑定this])
//在array原型上定义一个 zlxForEach 函数
Array.prototype.zlxForEach =
//传入一个callback 和 this 绑定
function(callback,argThis){
//拿到被操作的数组
var tarArray = this
//遍历数组元素
for (let index = 0; index < tarArray.length; index++) {
const element = tarArray[index];
//执行callback 并绑定this
callback.call(argThis,element,index,tarArray)
}
}
实现完之后就很明朗了,我们传入的callback是在一个for循环中调用,因此在 callback 中调用 renturn 只会中断当前循环的函数,而后续的循环会继续执行下去