返回顶部
首页 > 资讯 > 前端开发 > 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://lsjlt.com/news/165671.html(转载时请注明来源链接)

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

猜你喜欢
  • forEach循环里break使用方式详解
    目录一. 在forEach里使用break 会发生什么二. 为什么不能在forEach里使用break你真的了解break吗三.如何在forEach的循环里break?在forEac...
    99+
    2024-04-02
  • foreach循环使用方法详解
    前言 在前面的文章中,千锋壹哥给大家讲解了for、while、do-while三种循环结构,并讲解了如何跳出循环的几种方式,比如break、continue、return等。但是截止到目前,与循环相关的内容还没有完事,我们还有最后一哆嗦,...
    99+
    2023-09-15
    java jvm 开发语言 Powered by 金山文档
  • mybatis insert foreach循环插入方式
    mybatis insert foreach循环插入 @Insert("<script>" + "insert into driver_acc...
    99+
    2024-04-02
  • vue中forEach循环的使用讲解
    目录forEach循环的使用使用forEach报错,this指向问题forEach循环的使用 //data为集合 data.forEach(function(item, index...
    99+
    2024-04-02
  • 详解Python如何在多层循环中使用break/continue
    关于break/continue这两个关键字在平常的使用过程中一直比较迷糊。好不容易理解了吧,过段时间不使用好像忘记了什么。这个问题也是很多初学者比较容易提及的问题。 先通过一个简...
    99+
    2024-04-02
  • 详解Go语言中for循环,break和continue的使用
    目录基本语法有始有终的条件循环带条件的循环无限循环数组循环使用计数器循环利用range循环Map循环string的遍历Break和Continue基本语法 和C语言同源的语法格式,有...
    99+
    2024-04-02
  • C#的foreach循环怎么使用
    这篇文章主要介绍“C#的foreach循环怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#的foreach循环怎么使用”文章能帮助大家解决问题。使用 foreach 循...
    99+
    2023-06-17
  • 详解Java中的增强 for 循环 foreach
    foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在 Java 中还有比如 泛型、自动拆箱、自动...
    99+
    2023-05-31
    java 增强for循环 fo
  • Python循环语句代码详解:while、for、break
    目录 1 while循环   1 while循环 循环语句是程序设计中常用的语句之一。任何编程语言都有while循环,Python也不例外。while循环的格式如下所示。  while(表达式):       …   else: ...
    99+
    2023-09-20
    python 开发语言
  • MyBatis中使用foreach循环的坑及解决
    目录使用foreach循环的坑正确写法为忽现的Mybatis foreach失效记录解决方案使用foreach循环的坑 我们首先看一段MyBatis中使用foreach循环的sql:...
    99+
    2024-04-02
  • Java中怎么forEach循环中使用lambda表达式
    本篇文章为大家展示了Java中怎么forEach循环中使用lambda表达式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.数组怎么使用lambda数组不能直接在forEach中使用lambda表...
    99+
    2023-06-20
  • mybatis多个区间处理方式(双foreach循环)
    目录mybatis多个区间处理思路多个foreach同时使用问题应用场景注意事项解决方案mybatis多个区间处理 如图:要实现车辆数不同区间查询条件 思路 a.前端传数组,数...
    99+
    2024-04-02
  • PHP循环中如何使用foreach()方法遍历数组
    这篇文章主要介绍了PHP循环中如何使用foreach()方法遍历数组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。foreach():for...
    99+
    2024-04-02
  • Java8中用foreach循环获取对象的index下标详解
    前言 在Java8中,我们经常使用lambada表达式进行foreach循环,但是常常我们在遍历List的时候想获取对象的index,但是Java8、9、10、11都没有相关的支持,...
    99+
    2024-04-02
  • JS面试题之forEach能否跳出循环详解
    当年懵懂无知的我被问到这个问题时,脑袋一片空白,当然也没答对,一直以来我对forEach都有一种错误的理解,由于它比原始的for循环简洁许多,导致我一度认为那是为了方便书写所创造出来...
    99+
    2024-04-02
  • Python基础之python循环控制语句break/continue详解
    Python中提供了两个关键字用来控制循环语句,分别是break和continue break在条件成立时,不会执行循环中的后续代码,并且会停止整个循环 continue在条件成立时...
    99+
    2024-04-02
  • JavaScript中可以使用forEach跳出循环吗
    这篇文章给大家介绍JavaScript中可以使用forEach跳出循环吗,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。forEach使用说明arr.forEach(function callback(curr...
    99+
    2023-06-15
  • foreach循环怎么在java8项目中使用
    这篇文章将为大家详细讲解有关foreach循环怎么在java8项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.首先遍历一个List方式1.一开始是这样的:public stati...
    99+
    2023-05-31
    java foreach循环 fo
  • JavaList接口与Iterator接口及foreach循环使用解析
    目录List接口ArrayList集合LinkedList集合Iterator接口foreach循环List接口 List接口继承Collection接口,属于单列集合,在List集...
    99+
    2024-04-02
  • C语言中怎么使用break跳出循环
    今天小编给大家分享一下C语言中怎么使用break跳出循环的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。break跳出循环#i...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作