趙健の技術ノート

ITコース JavaScript基礎 042_ループ while、for

学習 / JavaScript基礎 約3785文字 · 10分で読める - 回閲覧

ループ文は、コードブロックを繰り返し実行するための方法です。JavaScript は whiledo-whilefor など、さまざまなタイプのループ文を提供しています。 完全なループ本体には、初期化式、ループ条件、イテレータが含まれます。

while ループ

while ループは、条件が true の間、コードを繰り返し実行するために使用されます。 ループ本体の1回の実行を 1回のイテレーション と呼びます。 任意の式や変数をループ条件にすることができます。ループ条件は評価され、結果はブール値に変換されます。 if と同様に、ループ本体に文が1つしかない場合、中括弧 {…} を省略できますが、推奨されません。 各イテレーションの前に条件がチェックされます。

例:

let i = 0; // 初期化式、通常はカウンター変数の宣言に使用、ないと undefined エラー
while (i < 5) { // ループ条件、`true` の場合、ループは実行され続ける
console.log(i);
i++; // イテレータ、通常はカウンター変数の更新に使用、ループ条件に対応
}

無限ループの例:

let i = 0;
while (1) { // 条件が常に true の場合、無限ループに入る
console.log(i);
i++; // 通常、この形式のカウンターでループ条件を更新
if (i >= 5) break; // コメントアウトすると無限ループモードに入る
}

do-while ループ

do-while ループは while ループに似ていますが、まずループ本体を1回実行し、その後条件が true かどうかをチェックします。条件が真の場合、ループ本体の実行を続けます。 使用シーンに注意が必要で、条件が真かどうかに関係なく、ループ本体を 少なくとも1回実行 する必要がある場合にのみ do-while を使用します。他のシーンでは while ループを推奨します。 各イテレーションの後に条件がチェックされます。

例:

let i = 0;
do {
console.log(i);
i++;
} while (i < 5);

for ループ

for ループはより複雑ですが、最もよく使用されるループ構造で、コードを繰り返し実行するために使用されます。 for ループには3つの部分が含まれます:初期化式、ループ条件、イテレータ。以下は for ループの基本構文です: 各イテレーションの前に条件がチェックされ、他の設定も使用できます。

例:

for (let i = 0; i < 5; i++) {
console.log(i);
}

無限ループの例:

let i = 0;
for ( ; ; ) { // すべての条件を省略すると、無限ループに入る
console.log(i);
i++; // 通常、この形式のカウンターでループ条件を更新
if (i >= 5) break; // コメントアウトすると無限ループモードに入る
}
文セグメントの省略

for ループは初期化式、ループ条件、イテレータのいずれか1つまたは複数を省略できますが、セミコロン ; は保持する必要があります。セミコロンは各部分を区切るために使用され、1つの部分を省略しても対応するセミコロンは保持する必要があります。

例:

let x = 0;
for (; x < 5; x++) {
console.log(x);
}
// 初期化式を省略し、ループの外に移動しても、ループは有効
let y = 0;
for (;; y++) {
if (y >= 5) {
break;
}
console.log(y);
}
// ループ条件を省略し、`if` 文と `break` でループを終了
let z = 0;
for (; z < 5;) {
console.log(z);
z++;
}
// イテレータを省略し、イテレータをループ本体内に移動しても、ループは有効

ネストされたループ

ネストされたループとは、ループ本体内に別の完全なループ構造を含めることを指します。ネストされたループは、外部ループを実行するたびに、内部ループを1回実行します。

正三角形の例:

// 例 A
for (let i = 1; i <= 5; i++) { // 外部ループ、行数を制御、1から5まで。
let row = ''; // 外部ループを実行するたびに、現在の行の星を格納する空文字列 `row` を作成。
for (let j = 1; j <= i; j++) { // 内部ループ、各行の星の数を制御、1から現在の行数 `i` まで。
row += ''; // 星を `row` に追加し、現在の行の星文字列を形成。
}
console.log(row); // 現在の行の星文字列を出力。
}
// 例 B
for (let i = 1; i <= 5; i++) { // 外部ループは行数を表す
for (let j = 1; j <= i; j++) { // 内部ループは列を表す
document.write(''); // 星をグラフィック要素として使用
}
document.write('</br>'); // 改行
}

逆三角形の例:

// 例 A
for (let i = 5; i >= 1; i--) { // 外部ループ、行数を制御、1から5まで。
let row = ''; // 外部ループを実行するたびに、現在の行の星を格納する空文字列 `row` を作成。
for (let j = 1; j <= i; j++) { // 内部ループ、各行の星の数を制御、1から現在の行数 `i` まで。
row += '* '; // 星を `row` に追加し、現在の行の星文字列を形成。
}
console.log(row); // 現在の行の星文字列を出力。
}
// 例 B
for (let i = 1; i <= 5; i++) { // 外部ループは行数を表す
for (let j = 0; j <= 5 - i; j++) { // 内部ループは列を表す
document.write(''); // 星をグラフィック要素として使用
}
document.write('</br>'); // 改行
}

break ループの終了(終了、脱出)

break は現在のループまたは switch 文を終了(終了、脱出)するために使用されます。break がない場合、後続の case が引き続き実行されます(つまり「フォールスルー」現象が発生します)。

「無限ループ + break」の組み合わせは、ループの開始/終了時に条件をチェックする必要はないが、中間やボディの複数の位置で条件チェックが必要な場合に適しています。

例:

let count = 0;
while (true) {
console.log("ループ中...");
// ある条件をシミュレートし、満たされたらループを抜ける
if (count === 5) {
console.log("条件を満たしたので、ループを抜けます");
break;
}
count++;
}

continue 次のイテレーションを続行(スキップ)

continue はループ内で現在のイテレーションを早期に終了し、次のイテレーションを続行するために使用されます。 continuebreak の「軽量版」です。ループ全体を停止するのではなく、現在のイテレーションを停止し、新しいループを強制的に開始します(条件が許す場合)。

例:

for (let i = 0; i < 8; i++) {
if (i % 2 === 0) {
continue; // i を 2 で割った余りが 0 の場合、現在のイテレーションをスキップし、次のイテレーションを続行
}
console.log(i);
}
共有:

コメント