譯者按: 最好是不用,不過基礎知識要掌握。javascript
爲了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原做者全部,翻譯僅用於學習。java
在這篇文章中,咱們會詳細介紹continue
和break
,分析它們的相同和不一樣之處,甚至用一些可運行的實例。函數
continue
和break
都是用於控制循環的。咱們先來看一下他們的定義:學習
注意:break
還能夠用在switch
中,本文主要介紹在循環中的使用。ui
考慮以下代碼:spa
for (let i = 1; i <= 10; i++){
console.log(i);
}
複製代碼
咱們有一個簡單的for循環,該循環會執行10次,i的值從1一直遞增到10。每一次循環將當前i的值打印出來。執行結果以下:翻譯
1
2
3
4
5
6
7
8
9
10
複製代碼
若是咱們只想打印偶數,應該如何作呢?使用continue
能夠很容易搞定。在每一次循環咱們檢查是否爲奇數,若是是,則跳出這次循環,繼續下一次。若是不是,則打印i的值。debug
for (let i = 1; i <= 10; i++){
if (i % 2 == 1) continue;
console.log(i);
}
複製代碼
執行結果以下:code
2
4
6
8
10
複製代碼
記住,當使用continue
關鍵字的時候,該次循環當即結束執行,continue
日後的代碼再也不被執行。cdn
咱們使用相同的循環來作例子:
for (let i = 1; i <= 10; i++){
console.log(i);
}
複製代碼
若是咱們想在i的值爲6的時候,終止整個循環。那麼咱們可使用break
:
for (let i = 1; i <= 10; i++){
if (i == 6) break;
console.log(i);
}
複製代碼
若是執行上面的代碼,for循環會在i爲6的時候終止執行,所以6也不會被打印到控制檯。
1
2
3
4
5
複製代碼
JavaScript太靈(gui)活(yi)了,出了BUG你也不知道,不妨接入Fundebug線上實時監控。
值得注意的是,break
和continue
都只對當前循環有效。若是咱們有嵌套循環,那麼就要很當心了。不妨來看下面的例子:
for (let i = 0; i < 5; i++) {
if (i % 2 == 0) continue;
for (let j = 0; j < 5; j++) {
if (j == 2) break;
console.log(`i = ${i}, j = ${j}`);
}
}
複製代碼
這裏咱們有兩個循環,每個都會執行5次(0~4)。外層的循環在i是偶數的時候,跳過當前循環執行下一個。也就是說只有i爲1或則3的時候,纔會執行內層的循環。
內層的循環只要j的值爲2,就終止了。所以,j只有0和1。
最終結果以下:
i = 1, j = 0
i = 1, j = 1
i = 3, j = 0
i = 3, j = 1
複製代碼
[Nicu Micleușanu]:最好的策略是break和continue都不要用。若是你用了,證實你哪裏搞錯了,嘗試換個方法。
[Brandon Morelli]: 我贊成用函數式的方法更好,來避免使用for循環。不過呢,理解continue
和break
的異同點仍是很重要的,萬一哪天遇到了呢。