JavaScript を使用する場合、多くの場合、データのコレクションをループする必要があります。これを行うための 2 つの一般的な方法は、for-in ループと for-of ループです。ただし、これらのループはさまざまなコンテキストやさまざまな種類のコレクションで使用されます。これらのループを効果的に使用するには、反復可能プロパティと列挙可能プロパティの違いを理解することが重要です。
1. for-in ループ: すべての列挙可能なプロパティをループします
for-in ループは、オブジェクトの列挙可能なプロパティを反復処理するように設計されています。列挙可能なプロパティは、オブジェクトをループするとき、または Object.keys() などのメソッドを呼び出すときに表示されるプロパティです。
リーリー
この例では、for-in ループは、動的に追加された isMarried プロパティを含む、obj オブジェクトの列挙可能なすべてのプロパティを反復処理します。
2. for-of ループ: すべての反復可能オブジェクトをループします。
一方、for-of ループは、反復可能なオブジェクトを反復するために使用されます。 iterable は、Symbol.iterator メソッドを持つオブジェクトです。反復可能なオブジェクトの一般的な例には、配列、文字列、マップ、セットなどがあります。
リーリー
ここで、for-of ループは配列 arr を反復し、anotherFruit プロパティは反復可能なシーケンスの一部ではないため無視します。
3. 配列は反復可能ですが、オブジェクトは反復可能ではありません
デフォルトでは、JavaScript の配列は Symbol.iterator メソッドが組み込まれているため反復可能です。ただし、プレーンオブジェクトにはこのメソッドがないため、反復可能ではありません。
リーリー
上記のコードでは、オブジェクトに対して for-of ループを使用しようとすると TypeError が発生します。これは、オブジェクトが Symbol.iterator メソッドを実装していないためです。
4. エラー説明: TypeError: obj は反復可能ではありません
反復不可能なオブジェクトに対して for-of ループを使用しようとすると、JavaScript は TypeError をスローします。このエラーは、for-of ループに必要な Symbol.iterator メソッドがオブジェクトにないために発生します。
リーリー
コード例
以下は、for-in ループと for-of ループの違いを示す完全な例です。
リーリー
結論
反復可能プロパティと列挙可能プロパティの違いを理解することは、JavaScript の for-in ループと for-of ループを効果的に使用するために不可欠です。 for-in ループはオブジェクトの列挙可能なプロパティを反復するために使用され、for-of ループは配列などの反復可能なオブジェクトを反復するために設計されています。これらのループを誤って使用すると、反復不可能なオブジェクトに対して for-of ループを使用しようとしたときに発生する TypeError などのエラーが発生する可能性があります。これらの違いを理解することで、より堅牢でエラーのない JavaScript コードを作成できます。
以上がJavaScript の反復可能プロパティと列挙可能プロパティの違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。