JavaScript基礎学習シリーズ第27回:for-in文

for-in ステートメントは、オブジェクト内の非シンボル キー プロパティを列挙するために使用される厳密な反復ステートメントです。構文は次のとおりです。

for (property in expression) statement

以下に例を示します。

for (const propName in window) {
    
    
  document.write(propName);
}

この例では、for-in ループを使用して、BOM オブジェクト ウィンドウのすべてのプロパティを表示します。ループが実行されるたびに、ウィンドウのすべてのプロパティが列挙されるまで、変数 13 propName にウィンドウ オブジェクトのプロパティが値として割り当てられます。for ループと同様に、ここでも制御ステートメント内の const は必要ありません。ただし、このローカル変数が変更されないようにするには、const を使用することをお勧めします。

ECMAScript のオブジェクトのプロパティには順序がないため、for-in ステートメントではオブジェクトのプロパティが返される順序を保証できません。すべての列挙可能なプロパティは一度返されますが、返される順序はブラウザーによって異なる場合があります。

for-in ループで反復される変数が null または未定義の場合、ループ本体は実行されません。

1. for-of ステートメント:

for-of ステートメントは、反復可能なオブジェクトの要素を反復処理するために使用される厳密な反復ステートメントです。構文は次のとおりです: for (式のプロパティ) ステートメント
例を次に示します。

    for (const el of [2,4,6,8]) {
    
    
      document.write(el);
}

この例では、for-of ステートメントを使用して、4 要素の配列内のすべての要素を表示します。ループは、すべての要素が反復されるまで継続します。for ループと同様に、ここでも制御ステートメント内の const は必要ありません。ただし、このローカル変数が変更されないようにするには、const を使用することをお勧めします。

for-of ループは、反復可能オブジェクトの next() メソッドが値を生成する順序で要素を反復します。反復しようとしている変数が反復をサポートしていない場合、for-of ステートメントはエラーをスローします。

2. ラベルの説明:

ラベル ステートメントはステートメントにラベルを付けるために使用されます。構文は次のとおりです。

    label: statement

以下に例を示します。

   start: for (let i = 0; i < count; i++) {
    
    
      console.log(i);
}

この例では、start は後で Break または continue ステートメントによって参照できるラベルです。ラベル ステートメントの一般的なアプリケーション シナリオは、入れ子になったループです。

3. Break ステートメントと continue ステートメント:

Break ステートメントと continue ステートメントを使用すると、ループ コードの実行をより厳密に制御できます。このうち、break ステートメントは、ループを直ちに終了し、ループの後の次のステートメントを強制的に実行するために使用されます。continue ステートメントは、ループをすぐに終了するためにも使用されますが、ループの先頭から再度実行を開始します。

上記のコードでは、for ループにより変数 i が 1 から 10 にインクリメントされます。ループ本体内には、(モジュロ演算子を使用して) i が 5 で割り切れるかどうかをチェックする if ステートメントがあります。その場合は、break ステートメントを実行してループを終了します。変数 num の初期値は 0 で、終了するまでにループが実行される回数を示します。

Break ステートメントが実行されると、実行されるコードの次の行は console.log(num) で、4 と表示されます。ループが 4 回実行される理由は、i が 5 に等しい場合、break ステートメントによりループが終了し、ループは num をインクリメントするコードを実行しないためです。ブレークをコンティニューに置き換えると、異なる効果が発生します。

let num = 0;
    for (let i = 1; i < 10; i++) {
    
    
      if (i % 5 == 0) {
    
    
continue;
}
num++; }
    console.log(num); // 8

今回、console.log には 8 が表示されます。これは、ループが 8 回完全に実行されたことを意味します。i が 5 に等しい場合、ループは num をインクリメントする前に終了しますが、i が 6 である次の反復が実行されます。その後、ループは、i が 10 に等しくなる自然終了まで実行されます。continue ステートメントにより num の増分回数が 1 回少なくなるため、num の最終値は 9 ではなく 8 になります。

Break と continue はどちらも label ステートメントで使用して、コード内の特定の場所に戻ることができます。以下の例に示すように、これは通常、ネストされたループ内にあります。

let num = 0;
num++; 10
 outermost:
for (let i = 0; i < 10; i++) {
    
    
 for (let j = 0; j < 10; j++) {
    
    
  if (i == 5 && j == 5) {
    
    
break outermost;
 } }
console.log(num); // 55

おすすめ

転載: blog.csdn.net/wanmeijuhao/article/details/135464842