for循环

JavaScript中,for循环可以使用 breakcontinue 来跳出:

  • continue:跳出本次循环
  • break:结束循环
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如何退出呢?

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

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

再试试 continue

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

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来实现:

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

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

JavaScript forEach 方法跳出循环的更多相关文章

  1. JavaScript forEach() 方法

    JavaScript forEach() 方法  JavaScript Array 对象 实例 列出数组的每个元素: <button onclick="numbers.forEach( ...

  2. JavaScript forEach方法

    最近看了一些html5和js方面的书,受益匪浅,因为看的东西比较多,却都没有怎么静心来做整理,慢慢来吧,可能最近自己有点儿小紧张.今天跟大家分享下JavaScript的forEach方法(其实是从&l ...

  3. javascript forEach方法与jQuery each区别

    1.forEach方法 语法: array.forEach(function(currentValue, index, arr), thisValue) 参数: 示例: <!DOCTYPE ht ...

  4. forEach方法如何跳出循环

    1.for方法跳出循环 function getItemById(arr, id) { var item = null; for (var i = 0; i < arr.length; i++) ...

  5. forEach 方法 (Array) (JavaScript)

    为数组中的每个元素执行指定操作. 语法 array1.forEach(callbackfn[, thisArg]) 参数 参数 定义 array1 必选.一个数组对象. callbackfn 必选.最 ...

  6. JavaScript数组方法--flat、forEach、map

    今天到flat了,一个第一次知道该方法还是看到一个面试题,别人给了个答案,用到了flat才知道的方法. 前面也写过关于这道面试题的文章,<一道关于数组的前端面试题>. 这里再来说说吧! f ...

  7. JavaScript数组方法的兼容性写法 汇总:indexOf()、forEach()、map()、filter()、some()、every()

    ECMA Script5中数组方法如indexOf().forEach().map().filter().some()并不支持IE6-8,但是国内依然有一大部分用户使用IE6-8,而以上数组方法又确实 ...

  8. js中forEach无法跳出循环?

    1. forEach() forEach() 方法从头至尾遍历数组,为每个元素调用指定的函数.如上所述,传递的函数作为forEach()的第一个参数.然后forEach()使用三个参数调用该 函数:数 ...

  9. JavaScript 数组方法总结

    最近公司没项目.所以所幸学学JS.毕竟很多人和我一样.属于培训机构出来的.JS基础也很差. 面试的时候面试官问你 .你会JS不.你会毫不犹豫的回答会.因为你确实用过.但是真正会的或许只是以前项目中需要 ...

  10. 【译】你应该了解的JavaScript数组方法

    让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...

随机推荐

  1. Linux下的网络输入输出流量的带宽控制(2015-11-23更新)

    Linux下的网络输入输出流量的带宽控制 整理者:赤子玄心 QQ:280604597 Email:280604597@qq.com 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回 ...

  2. 实验1 C语言输入输出和简单程序编写

    1.试验任务1 task1.c //打印一个字符小人 #include <stdio.h> int main() { printf(" o \n"); printf(& ...

  3. ELK中 Elasticsearch和Logstash内存大小设置的考虑

    本文为博主原创,转载请注明出处: 在ELK(Elasticsearch.Logstash和Kibana)日志采集和分析场景中,适当设置Logstash和Elasticsearch的内存大小非常重要.这 ...

  4. 红瞳瞳CRUD Avue各参数作用

    常用的两个avue文档: avue 开发文档: https://www.bookstack.cn/read/avue-2.x/3c22e1c01099c1f1.md   avue开发指南:https: ...

  5. angular:响应式表单(Reactive Forms)和模板驱动表单(Template-Driven Forms)分别进行验证

    2022-01-18 响应式表单 响应式表单是围绕Observable的流构建的. 使用响应式表单时,FormControl类是最基本的构造类. 在使用响应式表单前,需要先导入 ReactiveFor ...

  6. 按键1按下数码管显示1,按键2按下数码管显示2,按键3按下8个LED灯实现流水灯效果;

    #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 #include<intrins.h> //因为要用到左右移函数,所以加入这个头文件 ...

  7. C语言求100以内的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。要求定义和调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。

    /* 开发者:慢蜗牛 开发时间:2020.5.28 程序功能:求100以内的素数 */ #include<stdio.h> int prime(int m); int prime(int ...

  8. Django笔记四十三之使用uWSGI部署Django系统

    本文首发于公众号:Hunter后端 原文链接:Django笔记四十三之使用uWSGI部署Django系统 目前部署 Django 的方式一般来说是使用 Nginx + uWSGI + Django 来 ...

  9. 三菱PLC 轻松数采

    目前市面上数采的软件有很多,但是用的最为省力最为简单的就是kepserver了,在kepserver的应用中,有对应的三菱驱动针对于三菱PLC,三菱驱动支持多个Mitsubishi 协议,包括 MEL ...

  10. 【javaweb】integer是什么意思?integer和int的区别

    1.数据类型不同:int是基础数据类型,而integer是包装数据类型 2.默认值不同:int的默认值是0,而integer的默认值是null 3.内存中存储的方式不同:int 在内存中直接存储的是数 ...