JavaScript的標籤

JavaScript的標籤

學了那麼久用了那麼久的JavaScript,也是第一次據說有標籤這麼個東西,也許是之前粗略學習的時候,一帶而過吧。上w3cschool上看了下,JavaScript的標籤指的是:學習

對JavaScript代碼塊進行標記
如需標記 JavaScript 語句,請在語句以前加上冒號:測試

label:
語句

然而好像並無什麼幫助,繼續看看。code

break 和 continue 語句僅僅是可以跳出代碼塊的語句。ip

break labelname;

continue labelname;

continue 語句(帶有或不帶標籤引用)只能用在循環中。作用域

break 語句(不帶標籤引用),只能用在循環或 switch 中。it

經過標籤引用,break 語句可用於跳出任何 JavaScript 代碼塊:io

cars=["BMW","Volvo","Saab","Ford"];
    list:{
        document.write(cars[0] + "<br>");
        document.write(cars[1] + "<br>");
        document.write(cars[2] + "<br>");
        break list;
        document.write(cars[3] + "<br>");
        document.write(cars[4] + "<br>");
        document.write(cars[5] + "<br>");
    }

看到這裏也是腦門一熱,break竟然還能這麼用,因而忍不住多寫了幾個列子:console

測試

cars=["BMW","Volvo","Saab","Ford"];
    list:{
        document.write(cars[0] + "<br>");
        document.write(cars[1] + "<br>");
        document.write(cars[2] + "<br>");
        (function(){
            break list;
        })()
        document.write(cars[3] + "<br>");
        document.write(cars[4] + "<br>");
        document.write(cars[5] + "<br>");
    }

輸出:
Uncaught SyntaxError: Undefined label 'list'

好吧,我想多了,代碼塊的標籤的做用域彷佛只侷限於該代碼塊,內部的代碼塊都不行。。。跟變量的做用域差別仍是很大。function

test: for(var i = 0; i < 10; ++i) {
        for(var j = 10; j < 20; ++j)
           break test;
        console.log(i)
    }

以上代碼不會有輸出。switch、while、for和do語句容許一個前置的標籤。
另外,須要注意的是,break關鍵字和標籤之間__不容許換行__。test

相關文章
相關標籤/搜索