break 关键字:如果在循环中运行到 break; 关键字,那么就会直接退出整个循环,继续执行循环下面的语句;
continue 关键字:如果在循环中遇到 continue; 关键字,那么就会直接退出当前这一次循环,继续执行后面的循环;
(注意:1. continue 关键字跳过的是循环体内的语句,对于 for 循环的计数器更新并不会跳过,如果将计数器的更新放在循环体语句中,并且还将 continue 放在计数器更新之前,那么就会导致死循环。2. 在循环语句中嵌套一个条件判断的逻辑分支,并将 continue 放在逻辑分支语句中,如果这个逻辑分支生效,那么这个 continue 可以作用于嵌套的上一层循环)
break 和 continue 都会穿透逻辑分支语句,例如:if switch ;并且只作用于当前所在的循环结构,不会穿透影响更上一层的循环结构;
break/continue 支持循环前的标签。标签是 break/continue 跳出嵌套循环以转到外部的唯一方法。例如:
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(Value at coords (${i},${j})
, ‘’); // 如果是空字符串或被取消,则中断并跳出这两个循环。
if (!input) break outer; // (*) // 用得到的值做些事……
}
}
alert(‘Done!’);
break 指令必须在代码块内。从技术上讲,任何被标记的代码块都有效,例如:
label: {
// …
break label; // 有效
// …
}
……尽管 99.9% 的情况下 break 都被用在循环内,就像在上面那些例子中我们看到的那样。
continue 只有在循环内部才可行。