break と相互作用するステートメントでラベルを使用する方法を説明してもらえますか: switch、while、do、および for。
例を教えてください。
一般的に、私はそれを外側のループに分割することで見ます:
var i, j;
dance: for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {
console.log(i+'-'+j);
if (j === 10) { //normally, break only breaks the immediate loop
break dance; //this one breaks the loop labelled as dance
}
}
}
//continue here after i = 0,j = 10
Mozilla Developer Network Language Referenceの引用:
break または continue ステートメントを使用して参照できる識別子を持つステートメントを提供します。
たとえば、ラベルを使用してループを識別し、break または continue ステートメントを使用して、プログラムがループを中断するか実行を継続するかを示すことができます。
彼らはまた言うことに注意してください:
ラベルはプログラムを読みにくくするため、JavaScript ではあまり一般的に使用されません。可能な限りラベルの使用を避け、場合によっては関数の呼び出しまたはエラーのスローを優先します
これは、JS の GOTO ラベルに関する良い記事です。私は GOTO ラベル ロジックを使用したことがないので、実際に今日も新しいことを学びました。
記事の JS コード:
var pastures = getPastures();
var i, pastureLen = pastures.length;
pastureLoop:
for (i = 0; i < pastureLen; i++)
{
var pasture = pastures[i];
var cows = pasture.getCows();
var j, numCows = cows.length;
for (j = 0; j < numCows; j++)
{
var cow = cows[j];
if (cow.isEating())
{ continue pastureLoop; }
}
// No cows were eating, so fire the callback for pasture[i]
pasture.executeCallback(); // or whatever
}
ラベルは使用しないでください。
例:
// no label
while (condition) {
// do something
}