位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 流程控制 label 和 break 語句

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-24

■知識(shí)點(diǎn)

在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í)行。同時(shí)break可以接受一個(gè)可選的標(biāo)簽名,來決定跳出的結(jié)構(gòu)語句。其語法格式如下:

break label;

如果沒有設(shè)置標(biāo)簽名,則表示跳出當(dāng)前最內(nèi)層結(jié)構(gòu)。

■實(shí)例設(shè)計(jì)

【示例1】下面的示例設(shè)計(jì)在客戶端查找document的bgColor屬性。如果完全遍歷document對(duì)象,會(huì)浪費(fèi)時(shí)間,因此設(shè)計(jì)一個(gè)條件,判斷所枚舉的屬性名是否等于“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】針對(duì)示例2,可以為for/in語句定義一個(gè)標(biāo)簽outloop,然后在最內(nèi)層的break語句中設(shè)置該標(biāo)簽名,這樣當(dāng)條件滿足時(shí)就可以跳出最外層的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)時(shí)。break與標(biāo)簽名之間不能包含換行符,否則JavaScript會(huì)解析為兩個(gè)句子。

    break語句的主要功能是提前結(jié)束循環(huán)或多重分支,主要用在無法預(yù)控的環(huán)境下,避免死循環(huán)或者空循環(huán)。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部