今天踩了一个前端的坑。当forEach循环中满足某个条件时候就不在循环了。内心第一反应 添加return false 或 return 搞定~ 但是代码他依旧继续循环。
最后找到问题所在,forEach跳出的方法是throw err次才行,严格意义上说 map forEach 他们本身属于迭代行为 就不支持跳出的。当然这个throw err是使程序中断-跳出。
总结了一下跳出所有循环的方法:
try { var array = [1,2,3,4,5,6]; // 执行到第3次,结束循环 array.forEach((value)=>{ console.log("value---->",value); if(value > 3){ throw new Error("抛出异常跳出") } }); } catch(e) { console.log(e) };
for(var i=1;i<=10;i++) { if(i==8) { //等于8跳出 break; } console.log(i) }
for(var i=1;i<=10;i++) { if(i==8) { //等于8跳出 continue; } console.log(i) }
let arr = [1,2,3,4,5,6] for (let i in arr){ if(i > 3) { break } console.log(arr[i]) //1 2 3 4 }
这个方法 说实在的我很少用 0-0 需要注意的是 every虽然通过return false 可以跳出循环,但是循环里面你还是要写return true 让他持续循环 不然就只执行一次
//every()当内部return false时跳出整个循环 let list = [1, 2, 3, 4, 5]; list.every((value, index) => { if(value > 3){ console.log(value) return false; }else{ console.log(value) return true; //当然这边如果你不写这一行 她也会跳出的 就是上面说的 return true 为了让他进入下一次勋魂 } });
注意:return true 跳出整个循环 。 如果return false 跳出本次循环 和上面for break和continue方法相似
let list3 = [1, 2, 3, 4, 5]; list3.some((value, index) => { if(value === 3){ return true;//当内部return true时跳出整个循环 } console.log(value)// 1 2 });
let arr = [1,2,3,4,5] for (val of arr) { if(val > 3 ){ break; } console.log("val===>",val) //1 23 }
原文:https://www.cnblogs.com/owenma/p/13633667.html