1. ホーム
  2. javascript

[解決済み] ( for... in ) と ( for... of ) の文の違いは何ですか?

2022-03-18 21:58:51

質問

というのは知っています。 for... in ループ(キーを反復する)については聞いたことがあります。 for... of を使うのは初めてです(値を反復します)。

について混乱しています。 for... of ループを使用します。

var arr = [3, 5, 7];
arr.foo = "hello";
    
for (var i in arr) {
  console.log(i); // logs "0", "1", "2", "foo"
}
    
for (var i of arr) {
  console.log(i); // logs "3", "5", "7"
  // it doesn't log "3", "5", "7", "hello"
}

と理解しています。 for... of はプロパティ値に対して反復処理を行います。では、なぜ "3", "5", "7", "hello" ではなく "3", "5", "7" ?

とは異なり for... in ループは、各キーに対して反復処理を行います ( "0", "1", "2", "foo" を繰り返し、さらに foo キーは for... of はしません。 の値に対して反復処理を行います。 foo プロパティ、つまり "hello" . なぜそのようなことになるのでしょうか?

ここで私はコンソール for... of をループさせます。次のようなログが出力されるはずです。 "3", "5", "7","hello" が、ログに残るのは "3", "5", "7" . なぜ?

リンク例

解決方法は?

for in オブジェクトの列挙可能なプロパティ名に対してループを実行します。

for of (ES6 の新機能) は オブジェクト固有の イテレータ で生成された値をループしています。

あなたの例では 配列イテレータ は、配列内のすべての値を取得します (インデックス以外のプロパティは無視します)。