label語句、break語句和continue語句
label語句
可以在代碼中添加標簽,以便使用。以下是label語句的語法:
label:statement
示例:
start: for (var i = 0; i < count; i++) { alert(i); }
該示例中定義的start標簽可以在以後由break或continue語句引用,加標簽語句一般都要與for語句等循環語句配合使用。
break語句和continue語句
break語句和continue語句用於在循環中精確的控制代碼的執行。其中,break語句會立即退出循環,強制繼續執行循環後面的語句。而continue語句雖然也是立即退出循環但是退出循環後會從循環的頂部繼續執行。
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>break語句</title> <script type="text/javascript"> window.onload=function(){ var num=0; for (var i = 1; i <10; i++) { if (i%5==0) {test4.htmlbreak; } num++; } alert(num); } </script> </head> <body> </body> </html>
結果顯示:
在這個例子中的for循環會將變量i由1遞增至10.在循環體內,有一個if語句檢查i的值是否可以被5整除(使用求模操作符)。如果是,則執行break語句退出循環。另一方面,變量num從0開始,用於記錄執行的次數。在執行break語句之後,要執行的下一行代碼是alert()函數,結果就顯示是4.當然,也就是說,在變量i=5時,num++總共執行的次數為4次;而break語句的執行,導致循環在num再次遞增之前就退出了。
如果這裏把break替換為continue,則可以看到另一種結果:
<script type="text/javascript"> window.onload=function(){ var num=0; for (var i = 1; i <10; i++) { if (i%5==0) { continue;//把break替換為continue } num++; } alert(num); }
</script>
把break替換為continue結果之後結果顯示為8,也就是num++總共執行了8次。當i=5時,循環會在num再次遞增之前退出,但接下來執行的是下一次循環,即i的值等於6的循環,於是循環又繼續執行,直到i等於10時自然結束。
另一個問題就是為何num最終值為8?原因是continue語句導致它少遞增了一次。
break和continue語句都可以與label語句聯合使用,從而返回代碼中的特定位置。這種聯合使用的情況多發生在循環嵌套的情況下。
示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>break和continue語句與label語句聯合使用</title> <script type="text/javascript"> window.onload=function(){ var num=0; outermost: for (var i = 0; i<10; i++) { for (var j = 0; j<10; j++) { if (i==5&&j==5) { break outermost; } num++; } } alert(num); } </script> </head> <body> </body> </html>test5.html
在該示例中,outermost標簽表示外部的for語句。如果每個循環正常執行10次,則num++語句就會正常執行100次。換句話說就是如果兩個循環都自然結束,num的值應該是100,但由於內部循環中的break語句帶一個參數:要返回到的標簽。添加這個標簽的結果將會導致break語句不僅會退出內部的for語句(即使用變量j的循環),而且也會退出外部for語句(即使用i的循環)。為此,當i,j都等於5時,num的值剛好等於55.同樣continue也可以像這樣與label語句聯用哦!
<script type="text/javascript"> window.onload=function(){ var num=0; outermost: for (var i = 0; i<10; i++) { for (var j = 0; j<10; j++) { if (i==5&&j==5) { continue outermost;//將break換為continue } num++; } } alert(num); } </script>
結果顯示:
在該情況下,continue語句會強制執行循環————退出內部循環,執行外部循環。當j是5時,continue語句執行,而這意味著內部循環少執行了5次,因此num的結果是95.
label語句、break語句和continue語句