JavaScript 流程控制 label 和 break 語句
■知識點
在JavaScript中,使用label語句可以為一行語句添加標(biāo)簽,以便在復(fù)雜的結(jié)構(gòu)中設(shè)置跳轉(zhuǎn)目標(biāo)。其語法格式如下:
label : statements
break語句能夠結(jié)束當(dāng)前for、for/in> while、do/while或者switch語句的執(zhí)行。同時break可以接受一個可選的標(biāo)簽名,來決定跳出的結(jié)構(gòu)語句。其語法格式如下:
break label;
如果沒有設(shè)置標(biāo)簽名,則表示跳出當(dāng)前最內(nèi)層結(jié)構(gòu)。
■實例設(shè)計
【示例1】下面的示例設(shè)計在客戶端查找document的bgColor屬性。如果完全遍歷document對象,會浪費時間,因此設(shè)計一個條件,判斷所枚舉的屬性名是否等于“bgColor”,如果相等,則使用break語句跳出循環(huán)。
for(i in document){
if(i.toStringO == "bgColor"){
document.write ("document." + i + " = " + document [i] + "<br />");
break;
}
}
在上面的代碼中,break語句并非跳出當(dāng)前的if結(jié)構(gòu)體,而是跳出當(dāng)前最內(nèi)層的循環(huán)結(jié)構(gòu)。
【示例2】在下面嵌套的結(jié)構(gòu)中,break語句并沒有跳出for/in結(jié)構(gòu),它僅僅退出了switch結(jié)構(gòu)。
for(i in document){
switch(i.toString()){
case "bgColor":
document.write("document." + i + "=" + document[i] + "<br />");
break;
default:
document .write ("沒有找到");
}
}
【示例3】針對示例2,可以為for/in語句定義一個標(biāo)簽outloop,然后在最內(nèi)層的break語句中設(shè)置該標(biāo)簽名,這樣當(dāng)條件滿足時就可以跳出最外層的for/iii循環(huán)結(jié)構(gòu)。
outloop:for(i in document){
switch(i.toString()){
case "bgColor":
document.write("document." + i + + document[i] + "<br />");
break outloop;
default:
document .write ("沒有找到”);
■小結(jié)
break語句和label語句配合使用僅限于嵌套的循環(huán)結(jié)構(gòu),或者嵌套的switch結(jié)構(gòu),且需要退出非當(dāng)前層結(jié)構(gòu)時。break與標(biāo)簽名之間不能包含換行符,否則JavaScript會解析為兩個句子。
break語句的主要功能是提前結(jié)束循環(huán)或多重分支,主要用在無法預(yù)控的環(huán)境下,避免死循環(huán)或者空循環(huán)。
點擊加載更多評論>>