当前位置:首页 > javascript > 正文内容

JS forEach 如何跳出循环

hxing6411年前 (2024-01-06)javascript2553

for循环

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

  • continue:跳出本次循环

  • break:结束循环

JavaScript
for (let i = 0; i < 10; i++) {
  if (i === 1) {
    // 跳出本次循环,不会打印1
    continue
  }
  if (i === 3) {
    // 结束循环,不会打印3和之后的数字
    break
  }
  // 输出0 2
  console.log(i)
}


forEach循环

除了for循环,常用的forEach如何退出呢?

JavaScript
const numbers = [1, 2, 3, 4, 5]
numbers.forEach(number => {
  if (number === 2) {
    // 跳出整个循环
    break  // SyntaxError: Illegal break statement
  }
    console.log(number)
})


可以看到,直接使用break,会报非法中断语句错误


再试试 continue :

JavaScript
numbers.forEach(number => {
  if (number === 2) {
    // 跳出当前循环
    continue  // SyntaxError: Illegal continue statement: no surrounding iteration statement
  }
    console.log(number)
})


可以看到同样报错,continue不能在非循环语句中,原因是forEach的参数是一个回调函数,并不是循环语句,所以无法执行continue语句

具体可以参考:SyntaxError: continue must be inside loop - JavaScript | MDN


里面也提到了解决方法,使用 return 退出当前循环,以及使用 for of代替forEach

JavaScript
numbers.forEach(number => {
  if (number === 2) {
    // 跳出当前循环
    return 
  }
  console.log(number) // 1 3 4 5
}
for (const number of numbers) {
  if (number === 2) {
    continue
  }
  console.log(number) // 1 3 4 5
}


但是就想使用 forEach 来跳出循环应该如何操作呢,上面文档中没有提到,但可以使用 try catch来实现:

JavaScript
try {
  numbers.forEach(number => {
    if (number === 2) {
      throw new Error()
    }
    console.log(number) // 1
  })
} catch (error) {
  console.log('捕获到错误')
}


综上,使用forEach时,使用 return 跳出当前循环,使用 try catch 跳出整个循环。

扫描二维码推送至手机访问。

版权声明:本文由星星博客发布,如需转载请注明出处。

本文链接:https://xingxinghan.cn/?id=502

“JS forEach 如何跳出循环” 的相关文章

js fetch方法使用

// get请求,第一个参数是请求地址,第二个可选,默认发送的是get请求 fetch('/api/user/list').then(res => {     res.json().then(data&n...

JS中call aplly bind的区别

call、apply、bind的作用是改变函数运行时this的指向。1. call()的第一个参数为this绑定的对象,后面传入一串参数列表。当第一参数为null或undefined时,默认指向window对象。2. apply()和call()类似,唯一的不同点在于第二个参数传入一个参数数组。当第...

JS逆向实战20——深入解析JavaScript虚拟机逆向工程

在Web开发领域中,JavaScript(JS)是一门广泛使用的编程语言。然而,由于其脚本性质和开放性,JavaScript代码的安全性一直备受关注。为了保护知识产权和提高代码的安全性,一些开发者会将JavaScript代码进行加密和混淆。这就需要逆向工程师掌握JS逆向技术来还原加密和混淆后的代码。...

js模块化历程

这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来。经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史。 无模块时代在ajax还未提出之前,js还只是一种“玩具语言”,由Brendan Eich花了不到十天时间发明,用来在网页...

深入理解JavaScript原型链

JavaScript原型链是该语言中一个核心的概念,理解它对于成为一名优秀的JavaScript开发者至关重要。在本篇文章中,我们将深入探讨JavaScript原型链的工作原理、如何使用原型链来实现继承,以及一些与原型相关的最佳实践。 原型链是什么?...

JavaScript中的call、bind和apply方法深度解析

JavaScript是一种动态的、强大的编程语言,它的灵活性源于其独特的函数调用方式。在JavaScript中,我们常常会遇到三个非常重要的函数方法:call、bind和apply。这些方法都是用来改变函数运行时this的指向的。理解它们的工作原理和使用场景,对于我们编写高质量的Java...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。