for迴圈裡面的break;和continue;語句 break語句 哇,我已經找到我要的答案了,我不需要進行更多的迴圈了! 比如,尋找第一個能被5整除的數: for迴圈中,如果遇見了break語句,這個for迴圈就會立即終止,不在進行其他的迭代了。 for(var i = 1 ; i <= 100 ...
for迴圈裡面的break;和continue;語句
break語句
哇,我已經找到我要的答案了,我不需要進行更多的迴圈了!
比如,尋找第一個能被5整除的數:
for迴圈中,如果遇見了break語句,這個for迴圈就會立即終止,不在進行其他的迭代了。
for(var i = 1 ; i <= 100; i++){ console.log(i); if(i == 5){ break; //找到了一個,就立即終止迴圈 } } |
break語句只能跳出當前所在的最內層迴圈:
//break只中斷了最內層迴圈,外層迴圈還在繼續 for(var i = 1 ; i <= 10 ; i++){ for(var j = 1 ; j <= 10 ; j++){ console.log(i,j); if(j == 5){ break; } } } |
如果你這個break就是想終止所有的迴圈,那麼JS中允許你給迴圈語句加label
//break只能終止內層迴圈,但是我們就是想要終止外層迴圈 //就要給外層迴圈加label: waiceng : for(var i = 1 ; i <= 10 ; i++){ for(var j = 1 ; j <= 10 ; j++){ console.log(i,j); if(j == 5){ break waiceng; //break label的語法 } } } |
continue語句
呃,這個答案不是我想要的,趕緊試試下一個數字吧!
遇見continue語句,for會立即終止執行後面的語句,然後進入下一次迭代了。
for(var i = 1 ; i <= 100 ; i++){ if(i == 5){ continue; //當i為5的時候,立即終止執行後面的console語句,直接i為6了。 } console.log(i); } |
同樣的,continue只能終端當前最內層的for,外層for要加label。
break和continue的目的,就是優化演算法的。
尋找質數的方法:
<script type="text/javascript"> //尋找2~100之內的所有質數 waiceng : for(var i = 2 ; i <= 100 ; i++){ //我們要測試i是不是質數,之前我們的演算法是測試i的約數個數(不包括1和自己) //約數個數如果為0,那麼就是質數。 //憑什麼我要測試約數個數?? //只要你有約數,你就不是質數!!!! for(var j = 2 ; j <= Math.sqrt(i) ; j++){ if(i % j == 0){ continue waiceng; //如果這數字,被某一個數字整除了,那麼立即放棄他 //開始驗證下一個i } }
console.log(i); //如果一個數字有約數,就會執行continue,就遇不見這個語句了。 } </script> |