JavaScript循环中label的使用

 

label标记语句(labeled statement)(所谓标记就是在一条语句前面加个可以引用的标识符),可与break或continue语句联合使用

语法

label://标识符(可以是任何非保留关键字)

  statement  //语句

 

温馨提示:下文中的label1指的是父循环,即:变量为i的循环;label2指的是子循环,即:变量为j的循环。

另:关于break与continue的区别本文不予以赘述,如有需要请参考:https://zhidao.baidu.com/question/136303942.html

  break:跳出并结束当前循环

  continue:跳过循环中的一个迭代

与break混合使用——情形一:

label1:
for(var i=0;i<3;i++){
    label2:
    for(var j=0;j<3;j++){
        if(i==1&&j==1){
            break label1;  //满足条件时(结束)整个label1,即:整个循环终止。
        }
        console.log("i = "+i+" , j = "+j);
    }
}
// Output:
// i = 0 , j = 0
// i = 0 , j = 1
// i = 0 , j = 2
// i = 1 , j = 0

与break混合使用——情形二:

label1:
for(var i=0;i<3;i++){
    label2:
    for(var j=0;j<3;j++){
        if(i==1&&j==1){
            break label2;  //满足条件时(结束)当前label2,即i=1时的label2。注意:只是结束当前label2,label1还会继续循环,当i=2时,label2还会继续执行。
        }
        console.log("i = "+i+" , j = "+j);
    }
}
// Output:
// i = 0 , j = 0
// i = 0 , j = 1
// i = 0 , j = 2
// i = 1 , j = 0
// i = 2 , j = 0
// i = 2 , j = 1
// i = 2 , j = 2

与continue混合使用——情形一:

label1:
for(var i=0;i<3;i++){
    label2:
    for(var j=0;j<3;j++){
        if(i==1&&j==1){
            continue label1;  //满足条件时(跳过)当前label1,即:i=1时的label1。注意:只是跳过当前label1,并不是结束整个label1,也就是说label1还会继续循环。
        }
        console.log("i = "+i+" , j = "+j);
    }
}
// Output:
// i = 0 , j = 0
// i = 0 , j = 1
// i = 0 , j = 2
// i = 1 , j = 0
// i = 2 , j = 0
// i = 2 , j = 1
// i = 2 , j = 2

 

与continue混合使用——情形二:

label1:
for(var i=0;i<3;i++){
    label2:
    for(var j=0;j<3;j++){
        if(i==1&&j==1){
            continue label2;  //满足条件时(跳过)当前条件下的输出值,即:跳过i==1,j==1的情况。注意:只是跳过当前条件下的输出值,label1,label2还会照常循环。
        }
        console.log("i = "+i+" , j = "+j);  
    }
}
// Output:
// i = 0 , j = 0
// i = 0 , j = 1
// i = 0 , j = 2
// i = 1 , j = 0
// i = 1 , j = 2
// i = 2 , j = 0
// i = 2 , j = 1
// i = 2 , j = 2    
posted @ 2017-04-11 17:05  苗焱的博客  阅读(994)  评论(0)    收藏  举报