当开发者在JavaScript的开发中需要使用到跳出多重循环或者是跳出函数的操作时,使用break
和continue
关键字 这两个关键字的作用都是控制循环语句,break直接跳出循环,continue只是跳出本次循环,但是仅仅使用这两个关键字是满足不了开发者的需求,这个时候我们就需要了解 label
语句。
Label语句的含义
在 JavaScript 中,label语句可以用来标识代码块,从而可以在其他代码块中引用。label语句的语法格式如下:
label: statement
label可以是JavaScript中的任意标识符,statement可以是任意代码语句。label语句的作用是给语句起一个名字,用来表示一个代码块。
Label的基本用法
我们来看一个例子:
label1: for (var i = 0; i < 5; i++) {
label2: for (var j = 0; j < 5; j++) {
if (i * j > 6) {
console.log("break label with i=" + i + " j=" + j);
break label1;
}
console.log("continue label with i=" + i + " j=" + j);
}
}
上述代码定义了一个for循环,在循环内部又嵌套了一个for循环,我们在内层循环中使用了if条件语句来判断是否需要跳转。如果满足条件,则使用 break label1
跳出外层循环。
这里 label1:
就是一个标签。这个标签可以应用于任何语句,但是通常用于普通循环语句之外的语句,例如switch和循环退出语句(break 或 continue)。
Label语句的常见问题
嵌套循环跳出
接下来我们来看一个实例,了解如何使用label语句进行多层嵌套循环跳出,防止使用 break 语句跳出循环不会停留在外层循环的情况:
outermost:
for(var i = 0; i < 3; i++) {
for(var j = 0; j < 3; j++) {
if(i === 1 && j === 1) {
break outermost;
}
console.log("i = " + i + ", j = " + j);
}
}
运行的结果为:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 1, j = 0
我们可以发现,当 i 和 j 同时为1时,整个循环就会被跳出,不再进行后续的循环操作。
在 switch 中使用 label 语句
在使用 switch 语句时,也可以用 label 语句来标识一个 case 语句:
mainloop:
while(token !== null) {
switch(token.type) {
case "number":
// 处理数字
break;
case "string":
// 处理字符串
break;
case "operator":
// 处理运算符
break;
case "name":
// 处理名称
break;
default:
break mainloop;
}
}
在上述代码中,使用 mainloop:
标识了 while 循环,同时在 default 分支中使用 break mainloop;
直接跳出了整个循环语句。
总结
使用 label 语句可以更加可靠地跳出多重循环,同时也可以用于在 switch 语句中跳出整个循环。但是,在实际开发中,如果使用不当,也会影响代码的可读性,因此要格外小心地使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈Javascript中的Label语句 - Python技术站