Javascrtip GOTO 语句(模拟)
var i = 0; my_label : { i++; break my_label; i = 0; } my_label1 : { i++; while(true) { break my_label1; } i = 0; } my_label2 : { i++; switch (true) { case false : break; //作用于switch case true : break my_label2; //直接跳到label2的结束处 } i = 0; } alert(i);
break [label] 与此类似的还有 continue [label]
break [label] 不能跨函数的语法作用域.
mylabel_3 : { function foo(tag) { while(tag) break my_label3; // 这里标签找不到 } }
原因:
mylable_3 : { //.. }
function foo(tag) {
while(tag) break my_label3;
}
这个同等于上面的对象,因为它们处在不同的语法作用域中,事实上它们是并行的语法作用域。