为什么在forEach中return函数还会继续执行?实现一个就知道了!

本质上 我们的 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 只会中断当前循环的函数,而后续的循环会继续执行下去

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容