广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >forEach循环里break使用方式详解
  • 319
分享到

forEach循环里break使用方式详解

2024-04-02 19:04:59 319人浏览 安东尼
摘要

目录一. 在forEach里使用break 会发生什么二. 为什么不能在forEach里使用break你真的了解break吗三.如何在forEach的循环里break?在forEac

一. 在forEach里使用break 会发生什么

大家都知道 js 的 forEach里是不能使用break。但是为什么不能在forEach里使用呢?在forEach里使用break 会发生什么呢?

纸上得来终觉浅,绝知此事要躬行。要想知道发生什么,不妨在代码里验证一下。

let arr = [1, 2, 3, 4, 5];
arr.forEach((item, index) => {
    if (item > 2) {
        break
    }
    console.log(item)
})
// SyntaxError: Illegal break statement (非法中断语句)

在控制台可以看到输出:语法错误。

二. 为什么不能在forEach里使用break

要想知道forEach里为什么不能使用break,必须先要搞清楚break的语法。

你真的了解break吗

break 表示中止当前循环。

语法:break [label];

label:与语句标签相关联的标识符。如果 break 语句不在一个循环或者Switch语句中,则该项是必须的。

我们看一个例子:

我们平时正常使用时

let arr = [1, 2, 3, 4, 5]
for (let i = 0; i < arr.length; i++) {
    if (arr[i] > 2) {
        break // 大于2 跳出整个循环
    }
    console.log(arr[i]) // 1, 2
}

break 与语句标签一起使用时

let arr = [1, 2, 3, 4, 5]
outer_block: // 标识最外层循环
for (let i = 0; i < arr.length; i++) {
    console.log('i', arr[i]) // 1
    inner_block: // 标识里面的for循环
    for (let j = 0; j < arr.length; j++) {
        if (j > 3) {
            break outer_block  // 跳出最外层循环
        }
        console.log('j', arr[j]) // 1, 2, 3, 4
    }
}

输出结果:最外层输出:1,最次层输出:1,2,3,4。可以看出brake终止循环是有条件的。我们在回来看forEach这个问题。

先看下forEach语法:

forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;

是上面的定义相当于:

Array.prototype.forEach = function(callback) {
    for (let i = 0; i < this.length; i++) {
        callback(this[i], i, this);
    } 
};

可以看出:我们在forEach里使用break,其实是在callback里使用break。再明白一点,其实就是相当于你在for循环里这样写:

let arr = [1, 2, 3, 4, 5]
outer_block: 
for (let i = 0; i < arr.length; i++) {
    console.log('i', arr[i])
    inner_block1:
    (function() {
        inner_block2:
        break // 报错,不能直接使用break
    })()
}

到这里我想你已经明白了为什么不能在forEach里使用break了。回到本文的题目上来。

三.如何在forEach的循环里break?

查阅MDN,上面有一个备注:

编辑切换为居中

MDN

在forEach里合法的使用break

function breakInForEach(arr) {
	let BreakException = {};
	let res = false;
	try {
	    arr.forEach(item => {
	       if (item === 2) {
	          res = true;
		  throw BreakException;
	        }
	    })
	}
	catch(e) {
	    if (e !== BreakException) throw e
	}
	return res;
}
console.log(foreachBreak([1, 2, 3, 4, 5, 6])); // true

也可以使用every 或者 some等

最推荐的方式呢,就是这种需要break的场景下,直接使用every或者some。

  • every: 碰到return false的时候,循环中止,return true 循环继续;
  • some: 碰到return ture的时候,循环中止,return false 循环继续;

总结

本文介绍了为什么不能在forEach里使用break;在forEach里使用break 会发生什么以及怎样在forEach里使用break,更多关于forEach循环break使用的资料请关注编程网其它相关文章!

--结束END--

本文标题: forEach循环里break使用方式详解

本文链接: https://www.lsjlt.com/news/165671.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • forEach循环里break使用方式详解
    目录一. 在forEach里使用break 会发生什么二. 为什么不能在forEach里使用break你真的了解break吗三.如何在forEach的循环里break?在forEac...
    99+
    2022-11-13
  • foreach循环使用方法详解
    前言 在前面的文章中,千锋壹哥给大家讲解了for、while、do-while三种循环结构,并讲解了如何跳出循环的几种方式,比如break、continue、return等。但是截止到目前,与循环相关的内容还没有完事,我们还有最后一哆嗦,...
    99+
    2023-09-15
    java jvm 开发语言 Powered by 金山文档
  • 详解Python如何在多层循环中使用break/continue
    关于break/continue这两个关键字在平常的使用过程中一直比较迷糊。好不容易理解了吧,过段时间不使用好像忘记了什么。这个问题也是很多初学者比较容易提及的问题。 先通过一个简...
    99+
    2022-11-11
  • 详解Go语言中for循环,break和continue的使用
    目录基本语法有始有终的条件循环带条件的循环无限循环数组循环使用计数器循环利用range循环Map循环string的遍历Break和Continue基本语法 和C语言同源的语法格式,有...
    99+
    2022-11-13
  • vue中forEach循环的使用讲解
    目录forEach循环的使用使用forEach报错,this指向问题forEach循环的使用 //data为集合 data.forEach(function(item, index...
    99+
    2022-11-13
  • MyBatis中使用foreach循环的坑及解决
    目录使用foreach循环的坑正确写法为忽现的Mybatis foreach失效记录解决方案使用foreach循环的坑 我们首先看一段MyBatis中使用foreach循环的sql:...
    99+
    2022-11-12
  • Java中怎么forEach循环中使用lambda表达式
    本篇文章为大家展示了Java中怎么forEach循环中使用lambda表达式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.数组怎么使用lambda数组不能直接在forEach中使用lambda表...
    99+
    2023-06-20
  • Java8中用foreach循环获取对象的index下标详解
    前言 在Java8中,我们经常使用lambada表达式进行foreach循环,但是常常我们在遍历List的时候想获取对象的index,但是Java8、9、10、11都没有相关的支持,...
    99+
    2022-11-12
  • PHP循环中如何使用foreach()方法遍历数组
    这篇文章主要介绍了PHP循环中如何使用foreach()方法遍历数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。foreach():for...
    99+
    2022-10-19
  • JavaList接口与Iterator接口及foreach循环使用解析
    目录List接口ArrayList集合LinkedList集合Iterator接口foreach循环List接口 List接口继承Collection接口,属于单列集合,在List集...
    99+
    2022-11-13
  • 详解Thymeleaf的三种循环遍历方式
    目录循环遍历list集合1.实体类2.控制类3.each.html循环遍历map集合1.控制类2.each.html循环遍历数组循环遍历list集合 1.实体类 使用lombok插件...
    99+
    2022-11-13
  • Java List接口与Iterator接口及foreach循环使用的方法
    这篇文章主要介绍“Java List接口与Iterator接口及foreach循环使用的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java List接口与Iterator...
    99+
    2023-06-30
  • 详解python中字典的循环遍历的两种方式
    开发中经常会用到对于字典、列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式。 注意: python2和python3中,...
    99+
    2022-06-04
    两种 遍历 字典
  • 使用注解@Recover优化丑陋的循环详解
    目录1使用背景2开始上代码3@Retryable注解重要属性解析4@backoff注解5@Recover注解6注意事项总结1使用背景 在实际项目中其中一部分逻辑可能会因为调用了外部服...
    99+
    2022-11-13
  • 使用vue v-for循环图片路径方式
    目录v-for循环图片路径v-for循环图片无法显示解决方法v-for循环图片路径 <template> <el-carousel :interval="40...
    99+
    2022-11-13
  • MySql存储过程循环的使用分析详解
    目录简介场景描述解决方案案例总结简介 每一门数据库语言语法都基本相似,但是对于他们各自的一些特性(函数、存储过程等)的用法就不大相同了,就好比Oracle与mysql存储过程写起来就很多不同的地方,在这里主要是跟大家分享...
    99+
    2022-06-29
    MySql存储循环使用 MySql存储循环
  • Shell中的while循环几种使用实例详解
    1.利用while循环计算1到100的和: 示例代码1: #!/bin/bash i=1 sum=0 while [ $i -le 100 ] do let sum=sum+$i let i++ done ech...
    99+
    2022-06-04
    shell中while循环 shell中while循环的使用 shell中的while循环几种使用实例详解
  • Go语言学习之循环语句使用详解
    目录1、for循环2、for-each语法3、break的使用4、continue的使用5、goto的使用1、for循环 写法基本和其他语言一致,只是没有了while循环,用for代...
    99+
    2022-11-13
  • 详解Rust中三种循环(loop,while,for)的使用
    目录楔子loop 循环while 循环for 循环楔子 我们常常需要重复执行同一段代码,针对这种场景,Rust 提供了多种循环(loop)工具。一个循环会执行循环体中的代码直到结尾,...
    99+
    2022-11-13
  • Java选择结构与循环结构的使用详解
    目录前言一.选择结构1.1 if选择结构的四种格式1.2 switch选择结构二.循环结构2.1 while循环结构2.2 do-while循环结构2.3 for循环结构2.4 fo...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作