使用label 语句可以在代码中添加标签,以便将来使用。
以下是label 语句的语法:
label: statement
下面是一个示例:
start: for (var i=0; i < count; i++) { alert(i); }
这个例子中定义的start 标签可以在将来由break 或continue 语句引用。
加标签的语句一般都要与for 语句等循环语句配合使用。
Break
var num = 0; outermost: for (var i=0; i < 10; i++) { for (var j=0; j < 10; j++) { if (i == 5 && j == 5) { break outermost; } num++; } } alert(num); //55
在这个例子中,outermost标签表示外部的for 语句。如果每个循环正常执行10 次,则num++语句就会正常执行100 次。
换句话说,如果两个循环都自然结束,num的值应该是100。但内部循环中的break 语句带了一个参数:要返回到的标签。
添加这个标签的结果将导致break 语句不仅会退出内部的for语句(即使用变量j 的循环),而且也会退出外部的for 语句(即使用变量i 的循环)。为此, 当变量i和j都等于5 时,num的值正好是55。
Continue
var num = 0; outermost: for (var i=0; i < 10; i++) { for (var j=0; j < 10; j++) { if (i == 5 && j == 5) { continue outermost; } num++; } } alert(num); //95
在这种情况下,continue 语句会强制继续执行循环——退出内部循环,执行外部循环。当j 是5 时,continue 语句执行,而这也就意味着内部循环少执行了5 次,因此num的结果是95。
虽然联用break、continue和label语句能够执行复杂的操作,但如果使用过度,也会给调试 带来麻烦。在此,我们建议如果使用label语句,一定要使用描述性的标签,同时不要嵌套过多的循环。
摘自:《JavaScript高级程序设计(第三版)》