JavaScript - 繰り返し処理の書き方
while 文
while
文は指定された条件が true
に評価される限り文を実行します。以下の例では n
が 3
未満の場合繰り返されます。
let n = 0;
while (n < 3) {
n++;
}
do...while 文
do...while
文は指定された条件が false
になるまで繰り返します。do...while
文は条件式がチェックされる前に一度実行されます。条件が true
の場合、再び実行されます。すべての実行終了時に条件がチェックされ、条件が false
の場合、実行は停止します。
以下の例では do
ループは少なくとも一度繰り返されます。そして i
が 5
未満でなくなる直前まで繰り返しされます。
let i = 0;
do {
i += 1;
} while (i < 5);
for 文
for
文によるループは指定された条件が false
と評価されるまで繰り返されます。for
文の構文は以下のとおりです。。
for ([初期化式]; [条件式]; [更新式]){
文
}
- もしも初期化式があれば実行されます。この式は 1 個、またはそれ以上のループカウンタを初期化しますが、この構文ではいかなるレベルの複雑な式を入れることが可能です。初期化式で変数を宣言することもできます。
- 条件式が評価されます。条件式の値が
true
の場合、ループ文が実行されます。条件式の値がfalse
の場合、for
ループは終了します。条件式がすべて省略されている場合、条件式はtrue
であると仮定されます。 - 文が実行されます。複数の文を実行するには、それらの文をグループ化するためにブロック文
{ ... }
を使用します。 - もしも更新式があれば実行されます。
- ステップ 2 に制御が戻ります。
for(let i = 0; i < 3; i++){
console.log(i);
}
/* 実行結果
0
1
2
*/
for...in 文
for...in
文はオブジェクトにあるすべての列挙可能なプロパティに対し指定された変数を通して反復処理を行います。それぞれの異なるプロパティに JavaScript は指定された文を実行します。
let o = { x:1, y:2};
for(let p in o){ // o のプロパティ名を変数 p に代入する。
console.log(p + ":" + o[p]); // 各プロパティの値を出力する。
}
/* 実行結果
x:1
y:2
*/
for...of 文
for...of
文は、反復可能オブジェクト(Array
、Map
、Set
、arguments
オブジェクトなどを含む)を反復処理するループを生成し、それぞれのプロパティの値に対して実行したい文をともなって作られた反復処理フックを呼び出します。
let arr = [3, 5, 7];
for (let i of arr) {
console.log(i);
}
/* 実行結果
3
5
7
*/
for...in
はプロパティ名に対し反復処理される一方、for...of
はプロパティの値に対し反復処理します。
let arr = [3, 5, 7];
arr.foo = "hello";
for (let i in arr) {
console.log(i);
}
/* 実行結果
0
1
2
foo
*/
for (let i of arr) {
console.log(i);
}
/* 実行結果
3
5
7
*/