forEach和for如何跳出循环

for

continue语句

概述: continue 语句结束当前(或标签)的循环语句的本次迭代,并继续执行循环的下一次迭代。
注意:
与 break 语句的区别在于, continue 并不会终止循环的迭代,而是:
在 while 循环中,控制流跳转回条件判断;
在 for 循环中,控制流跳转到更新语句。
continue 语句可以包含一个可选的标号以控制程序跳转到指定循环的下一次迭代,而非当前循环。此时要求 continue 语句在对应的循环内部。(摘自MDN)

continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。

for (let i = 0; i < arr.length; i++) {
    if (i === 2) {
        continue
    }
    console.log('for===', arr[i])
}

// 结果
// for===continue 1
// for===continue 2
// for===continue 4
// for===continue 5

双层for循环中内层用continue

 for (let i = 0; i < 10; i += 1) {
      for (let j = 0; j < 5; j += 1) {
        if (j === 5) {
          continue;
        }
        console.log(`当前j:${j}`);
      }
      console.log(`当前i:${i}`);
 }

break语句

break 语句可用于跳出循环

for (let i = 0; i < arr.length; i++) {
    if (i === 2) {
        break
    }
    console.log('for===break', arr[i])
}

// 结果
// for===break 1
// for===break 2

双层for循环中内层用break

 for (let i = 0; i < 10; i += 1) {
      for (let j = 0; j < 5; j += 1) {
        if (j === 3) {
          break;
        }
        console.log(`当前j:${j}`);
      }
      console.log(`当前i:${i}`);
 }

结论:break用于双层forEach中是跳出内层循环,继续外层的下一次循环。

forEach

注意: 没有办法中止或者跳出 forEach 循环,除了抛出一个异常。如果你需要这样,使用forEach()方法是错误的,你可以用一个简单的循环作为替代。如果您正在测试一个数组里的元素是否符合某条件,且需要返回一个布尔值,那么可使用 Array.every 或 Array.some。如果可用,新方法 find() 或者findIndex() 也可被用于真值测试的提早终止。(摘自MDN)

forEach中不能使用 continuebreak

return语句

forEach中使用 return 语句的作用只能跳出当前循环,并不能跳出整个循环。

arr.forEach((a, i) => {
    if (i === 2) {
        return
    }
    console.log('forEach===return', a)
})

// 结果
// forEach===return 1
// forEach===return 2
// forEach===return 4
// forEach===return 5

如果需要跳出整个循环,需要throw抛异常,如下

try {
    arr.forEach((a, i) => {
        if (i === 2) {
            throw new Error()
        }
        console.log('forEach===throw', a)
    })
} catch (e) {
    console.log(e)
}

return是用于函数中的哦,for语句中不能使用return哦

链接: 参考链接

### JavaScript `forEach` 中跳出循环 JavaScript 的 `forEach` 方法设计上并不支持通过常规方式如 `break` 或者 `continue` 来提前终止循环。尝试在 `forEach` 内部使用这些语句会导致错误,因为它们仅适用于传统的 `for` `while` 循环结构[^3]。 然而,有几种替代方案可以实现类似的效果: #### 使用高阶函数配合异常处理 一种方法是抛出一个特定类型的错误来强制退出循环,并在外层捕获这个错误以防止程序崩溃。这种方法虽然有效但不推荐用于日常开发中,因为它违背了异常应该只用来表示意外情况的最佳实践。 ```javascript try { [1, 2, 3].forEach(function(value) { if (value >= 2) throw new Error('Break'); console.log(value); }); } catch(e) { if (e.message !== 'Break') throw e; } ``` #### 利用其他迭代器代替 `forEach` 对于需要能够中途退出的情况,建议改用更适合的工具,比如普通的 `for` 循环或是 `some()`/`every()` 这样的内置方法。这两种方法会在满足条件时立即返回布尔值并停止进一步执行。 ```javascript // Using some() const array = [1, 2, 3]; array.some(item => { console.log(item); // Will log until condition met or end reached. return item === 2; // Returns true when we want to stop iteration. }); ``` #### 将逻辑重构到更合适的控制流结构 当遇到复杂业务逻辑不适合简单遍历时,考虑重新评估算法设计,可能找到更好的解决方案而不需要强行中断 `forEach`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值