Lable語句用法

Lable語句用法(摘自Javascript高級程序設計)


break 和 continue 語句都可以與 label 語句聯合使用,從而返回代碼中特定的位置。這種聯合
使用的情況多發生在循環嵌套的情況下,如下面的例子所示:

  • break
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); //55

在這個例子中,outermost 標籤表示外部的 for 語句。如果每個循環正常執行 10 次,則 num++
語句就會正常執行 100 次。換句話說,如果兩個循環都自然結束,num 的值應該是 100。但內部循環中
的 break 語句帶了一個參數:要返回到的標籤。添加這個標籤的結果將導致 break 語句不僅會退出內
部的 for 語句(即使用變量 j 的循環),而且也會退出外部的 for 語句(即使用變量 i 的循環)。爲此,
當變量 i 和 j 都等於 5 時,num 的值正好是 55。

自制流程圖(見笑了)

Created with Raphaël 2.1.0開始添加標籤outermosti<10i++j<10j++i==5 && j==5跳到標籤outermost,由於是break退出兩個循環結束num++yesnoyesnoyesno

同樣,continue 語句也可以像這樣與 label 語句聯
用,如下面的例子所示:

  • continue
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;
        }
        num++;
    }
}
alert(num); //95

在這種情況下,continue 語句會強制繼續執行循環——退出內部循環,執行外部循環。當 j 是 5
時,continue 語句執行,而這也就意味着內部循環少執行了 5 次,因此 num 的結果是 95。

自制流程圖(見笑了)

Created with Raphaël 2.1.0開始添加標籤outermosti<10i++j<10j++i==5 && j==5跳到標籤outermost,由於是continue繼續第一層循環結束num++yesnoyesnoyesno

雖然聯用 break、continue 和 label 語句能夠執行復雜的操作,但如果使用過度,也會給調試
帶來麻煩。在此,我們建議如果使用 label 語句,一定要使用描述性的標籤,同時不要嵌套過多的循環。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章