1.for...of 循環可以與break、continue 和 return 配合使用,跳出循環
2.forEach 循環無法中途跳出,break 命令或 return 命令都不能奏效。
1.跳出本輪循環 return
let arr = [1,2,3,4,5,6]
arr.forEach(function(element){
if(element==3){
return;
}
console.log(element);
});
//1 2 4 5 6
//沒有打印出3
2.跳出整個循環 try catch
MDN中:沒有辦法中止或跳出 forEach() 循環。
但是如果就是想跳出,使用try catch捕獲異常。當然這個是使程序中斷-算跳出,但是嚴格意義上說 map forEach 他們本身屬於迭代行為就不支持跳出的。
let arr = [1,2,3,4,5,6];
try {
arr.forEach(function(element){
if(element==3){
throw new Error("拋出異常跳出");
}
console.log(element);
});
} catch (error) {
console.log('出錯了');
console.log(error);
}
//1 2
出錯了
Error: 拋出異常跳出
at foreach.js:5:19
at Array.forEach (<anonymous>)
3.多層for循環的break
java中,訂label,需要使用break時帶上label,跳出指定的label。
public void test(T) {
flag: for (int i = 1; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (i == 2) {
break flag;
} else {
System.out.println("i=" + i + " ;j=" + j);
}
}
}
在JavaScript中思想和java也是一樣的。
out: for (let i = 0; i < 4; i++) {
for (let j = 0; j < 3; j++) {
console.log("i " + i+" " + "j " + j);
if (j === 2) {
break out;
}
}
}
// i 0 j 0
// i 0 j 1
// i 0 j 2