forEach中return会退出循环吗

admin 2023-10-15 550 阅读 0评论

forEach循环

在JavaScript中的forEach循环中使用return语句,并不会退出或终止循环,forEach循环会继续执行完剩余的所有迭代。

forEach循环中的return语句只会从当前的迭代回调函数中返回,而不会中断整个循环。 举例来说:

const array = [1, 2, 3, 4, 5];
array.forEach(num => {  if (num === 3) {    return;  }  console.log(num); });
// 输出:// 1// 2// 4// 5

当num等于3时,return语句只会从当前迭代的回调函数返回,forEach循环仍会继续执行,输出4和5。

return可以跳出的循环

在JavaScript中,以下几种循环使用return语句可以退出/中断整个循环的执行:

  1. for循环

在for循环中,return会完全退出循环,中断后续的所有迭代:

for (let i = 0; i < 5; i++) {
           if (i === 3) {
               return;
           }
           console.log(i);
       }
// 输出 0 1 2
  1. for...in循环

return也会立即退出for...in循环:

for (let i in obj) {
   if (i === 'foo') {
       return;
   }
   // ...
}
  1. for...of循环

return会跳出for...of循环:

for (let x of array) {
   if (x === 'bar') { return; }
   // ...
}
  1. while循环

在while循环里return会中断循环:

while (i < 5) {
   if (i === 3) {
       return;
   }
   i++;
}


  1. do...while循环

return也会中断do...while循环:

do {
   if (i === 3) {
       return;
   }
   i++;
} while (i < 5);

for、while、do...while循环以及for...in、for...of循环,都可以通过return语句中断并退出循环。只有forEach循环的return不能退出整个循环。如果你的代码有跳出循环的操作,最好不要选择foreach循环。

foreach跳出循环的方法

在forEach循环中如果想要提前退出整个循环,有以下几种方法:

  1. 使用return + 标签语句
outer: forEach(items, item => {
   if(condition) {
       return outer; // 跳出forEach循环
   }
})

通过return一个标签outer,可以跳出外层的forEach循环。

  1. 抛出异常
forEach(items, item => {
   if(condition) {
       throw new Error('Quit loop'); // 抛出异常停止循环
   }
})

throw一个错误可以停止forEach循环,但是不太推荐,容易造成难以跟踪的bug。

  1. 使用some()方法
items.some(item => {
   if(condition) {
       return true; // some()遇到true就停止循环
   }
})


some()里return true会退出整个循环。

  1. 转换为for/while循环

所以forEach循环内部最好不要使用return、break等语句强制退出。 可以用上面其他方法退出,或者直接转换为普通for/while循环。

喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 550人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表