在forEach中使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错

执行以下程序,输出结果为()

var arr = [2,1,3,5,9]; var count = 0; arr.forEach((val1,val2)=>{ count++; if(count % 3 == 0){ return; } console.log(val1); })

A
2 1

B
0 1

C
0 1 3 4

D
2 1 5 9

正确答案:D

arr.forEach()是循环遍历数组,它的参数是一个函数,每迭代一次数组,就执行函数一次,
也就是,虽然在函数内部存在return语句,但是当执行return时相当于退出一次迭代,当前数组会继续下一次迭代,
函数有两个参数,参数val1为数组的元素值,参数val2为数组元素对应的索引,因此正确答案为D选项。

var arr = [2,1,3,5,9]; var count = 0; arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9]; count++; //第一次循环count++为0 if(count % 3 == 0){ //第一次循环count为1,不满足条件,不进入if条件里 return; } console.log(val1);//第一次循环val1=2 }) arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9]; count++; //第二次循环count++为1 if(count % 3 == 0){ //第二次循环count为2,不满足条件,不进入if条件里 return; } console.log(val1);//第二次循环val1=1 }) arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9]; count++; //第三次循环count++为2 if(count % 3 == 0){ //第三次循环count为3,满足条件,进入if条件里 return; //return跳出本次循环,不执行后续代码 } console.log(val1);//第三次循环没执行到这 }) arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9]; count++; //第四次循环count++为3 if(count % 3 == 0){ //第四次循环count为4,不满足条件,不进入if条件里 return; } console.log(val1);//第四次循环val1=5 }) arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9]; count++; //第五次循环count++为4 if(count % 3 == 0){ //第五次循环count为5,不满足条件,不进入if条件里 return; } console.log(val1);//第五次循环val1=9 })

在forEach中使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错

return false;//仍然会执行完循环,但不再执行循环后面的js代码 let arr = [2,31,3] arr.forEach((val, index) => { if(val===31) { return false } console.log('执行第' + index + '次数') }) 执行第0次数
执行第2次数
其中val =31 这一次的循环return false以后的代码不再执行

根据MDN的forEach方法注意点,除了抛出异常以外,没有办法跳出或中止forEach方法。如果需要中止或跳出循环,不应该是forEach

forEach:使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错
for of: 与for(;;)类似,可以跳出循环
every:every的判断是在识别到不满足的条件时,立刻停止
filter、some:无法跳出循环,并且使用break会直接报错


__EOF__

本文作者龙陌
本文链接https://www.cnblogs.com/longmo666/p/17834971.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(425)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示