ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で配列の反復に「for...in」ループの使用を避けるべきなのはなぜですか?

JavaScript で配列の反復に「for...in」ループの使用を避けるべきなのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-28 22:07:18498ブラウズ

Why Should I Avoid Using `for...in` Loops for Array Iteration in JavaScript?

JavaScript での配列反復では「for...in」を避ける

JavaScript の「for...in」ループには潜在的な落とし穴がある配列を反復処理するとき。これは適切なアプローチであるように見えますが、予期しない結果につながる可能性があります。

なぜ悪いアイデアなのか

「for...in」ループはプロパティを反復処理します。 、配列内で直接定義されていないものも含みます。これには、配列のプロトタイプから継承されたプロパティ、または動的に追加されたプロパティが含まれます。

たとえば、次のコードを考えてみましょう。

var a = []; // Empty array
a[5] = 5; // Resize the array

空の配列を作成したにもかかわらず、その 5 番目のインデックスに値を割り当てると、効果的にサイズが変更されます。配列。

「for...in」を使用して反復する場合:

for (var i in a) {
  console.log(a[i]);
}

ループ次のプロパティを反復処理します:

  • 0、1、2、3、4 (数値インデックス)
  • 5 (5 番目のインデックスに割り当てられた値)

ただし、継承されたプロパティや、配列に関連しない可能性がある配列オブジェクトに追加された他のプロパティも反復処理される可能性があります。 data.

代わりに、数値ループを使用します

特に配列を反復するには、数値ループを使用します。

for (var i = 0; i < a.length; i++) {
  console.log(a[i]);
}

このループは明示的に反復します。配列の数値インデックスを調べて、期待される値のみがアクセスされるようにします。

以上がJavaScript で配列の反復に「for...in」ループの使用を避けるべきなのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。