翼度科技»论坛 编程开发 JavaScript 查看内容

JavaScript forEach 方法跳出循环

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
for循环

JavaScript中,for循环可以使用 break 和 continue 来跳出:

  • continue:跳出本次循环
  • break:结束循环
  1. for (let i = 0; i < 10; i++) {
  2.   if (i === 1) {
  3.     // 跳出本次循环,不会打印1
  4.     continue
  5.   }
  6.   if (i === 3) {
  7.     // 结束循环,不会打印3和之后的数字
  8.     break
  9.   }
  10.   // 输出0 2
  11.   console.log(i)
  12. }
复制代码
forEach循环

除了for循环,常用的forEach如何退出呢?
  1. const numbers = [1, 2, 3, 4, 5]
  2. numbers.forEach(number => {
  3.   if (number === 2) {
  4.     // 跳出整个循环
  5.     break  // SyntaxError: Illegal break statement
  6.   }
  7.     console.log(number)
  8. })
复制代码
可以看到,直接使用break,会报非法中断语句错误
再试试 continue :
  1. numbers.forEach(number => {
  2.   if (number === 2) {
  3.     // 跳出当前循环
  4.     continue  // SyntaxError: Illegal continue statement: no surrounding iteration statement
  5.   }
  6.     console.log(number)
  7. })
复制代码
可以看到同样报错,continue不能在非循环语句中,原因是forEach的参数是一个回调函数,并不是循环语句,所以无法执行continue语句
具体可以参考:SyntaxError: continue must be inside loop - JavaScript | MDN
里面也提到了解决方法,使用 return 退出当前循环,以及使用 for of代替forEach
  1. numbers.forEach(number => {
  2.   if (number === 2) {
  3.     // 跳出当前循环
  4.     return
  5.   }
  6.   console.log(number) // 1 3 4 5
  7. }
复制代码
  1. for (const number of numbers) {
  2.   if (number === 2) {
  3.     continue
  4.   }
  5.   console.log(number) // 1 3 4 5
  6. }
复制代码
但是就想使用 forEach 来跳出循环应该如何操作呢,上面文档中没有提到,但可以使用 try catch来实现:
  1. try {
  2.   numbers.forEach(number => {
  3.     if (number === 2) {
  4.       throw new Error()
  5.     }
  6.     console.log(number) // 1
  7.   })
  8. } catch (error) {
  9.   console.log('捕获到错误')
  10. }
复制代码
综上,使用forEach时,使用 return 跳出当前循环,使用 try catch 跳出整个循环。

来源:https://www.cnblogs.com/easy1996/p/17940359
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具