学了那么久用了那么久的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