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;
}
这个同等于上面的对象,因为它们处在不同的语法作用域中,事实上它们是并行的语法作用域。

posted @ 2012-03-20 09:32  oneroundseven  阅读(394)  评论(0编辑  收藏  举报