學了那麼久用了那麼久的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