JavaScript/for
for
編集for は、JavaScript における一般的な反復処理を行うための制御文です。通常の数値反復だけでなく、for...in
や for...of
を使ってオブジェクトや配列を反復処理する構文も含まれます。それぞれの用途や使用方法を以下で解説します。
構文
編集一般的な for ループ
編集for (初期化; 条件; 更新) { // 実行するコード }
各部分の説明:
- 初期化: カウンター変数を初期化します。
- 条件: 条件が
true
の間、ループが実行されます。 - 更新: 各反復の最後に実行される式です。
for...in ループ
編集for (プロパティ in オブジェクト) { // 実行するコード }
- オブジェクトのすべての列挙可能なプロパティ名を反復します。
for...of ループ
編集for (変数 of 反復可能オブジェクト) { // 実行するコード }
- 配列やその他の反復可能なオブジェクトの要素を反復します。
for await...of ループ
編集for await (変数 of 非同期反復可能オブジェクト) { // 実行するコード }
- 非同期反復可能なオブジェクトの要素を反復します。
使用例
編集一般的な for ループ
編集for (let i = 0; i < 5; i++) { console.log(i); // 0, 1, 2, 3, 4 を出力 }
この例では、カウンター i を使って 0 から 4 までの数値を出力しています。
for...in ループ
編集const obj = { a: 1, b: 2, c: 3 }; for (const key in obj) { console.log(key, obj[key]); // a 1, b 2, c 3 を順に出力 }
この例では、オブジェクト obj のすべてのキーと値を出力します。
for...of ループ
編集const array = ['A', 'B', 'C']; for (const value of array) { console.log(value); // 'A', 'B', 'C' を順に出力 }
この例では、配列の各要素を出力します。
for await...of ループ
編集async function asyncExample() { const promises = [ Promise.resolve('X'), Promise.resolve('Y'), Promise.resolve('Z'), ]; for await (const value of promises) { console.log(value); // 'X', 'Y', 'Z' を順に出力 } } asyncExample();
この例では、非同期の Promise
を順に解決し、その値を出力します。
注意点
編集- for...in の注意点:
for...in
はプロトタイプチェーンのプロパティも列挙する可能性があるため、オブジェクトのキーを限定したい場合はObject.hasOwnProperty
を使ってチェックすることを推奨します。 - for...of の制約:
for...of
は反復可能オブジェクト(Symbol.iterator
を実装しているオブジェクト)にのみ使用できます。