Rya*_*yan 42 javascript label loops break nested-loops
我刚刚发现在JavaScript中使用标签,例如:
for (var i in team) {
if(i === "something") {
break doThis: //Goto the label
} else {
doThat();
}
}
doThis: //Label
doIt();
Run Code Online (Sandbox Code Playgroud)
直到现在我还没有听说过这个,我在网上找不到太多关于它的信息,我开始认为这是有原因的.
在我看来,这类似于GOTO其他语言的陈述,并将被视为不良做法.假设这个我是对的吗?
tdo*_*bek 47
JavaScript中的标签主要用于break,或者在嵌套循环中继续以便能够打破外部,或者从内部循环内部的代码继续外部循环:
outer:
for (let i = 0; i < 10; i++)
{
let k = 5;
for (let j = 0; j < 10; j++) // inner loop
if (j > 5)
break; // inner
else
continue outer; // it will go to next iteration of outer loop
}
Run Code Online (Sandbox Code Playgroud)
如果你使用continue而没有'outer'标签,那么它将转到内循环的下一次迭代.这就是Javascript中需要标签的原因.
Sar*_*raz 25
这些是环路断路器标识符.如果你有嵌套循环(循环内部循环)并使用这些标识符,它们是有用的,你可以有条件地指定何时和哪个循环突破.
Avoid using labels
Labels are not very commonly used in JavaScript since they make programs harder to read and understand. As much as possible, avoid using labels and, depending on the cases, prefer calling functions or throwing an error.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
标记中断可以跳出任何代码块,而不仅仅是循环
<p id="test1"></p>
<p id="test2"></p>
<p id="test3"></p>
<p id="test4"></p>
<p id="test5"></p>
test: {
document.getElementById('test1').innerHTML = "test 1 passed";
document.getElementById('test2').innerHTML = "test 2 passed";
document.getElementById('test3').innerHTML = "test 3 passed";
break test;
document.getElementById('test4').innerHTML = "test 4 passed";
document.getElementById('test5').innerHTML = "test 5 passed";
}
Run Code Online (Sandbox Code Playgroud)
结果:
测试 1 通过
测试 2 通过
测试 3 通过