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 is does not log "3", "5", "7", "hello"
}
私が得たのは、for... of
プロパティ値を反復処理することです。では、なぜ"3", "5", "7", "hello"
代わりにログを返さない(返す)の"3", "5", "7"
ですか?ただし、for... in
ループは各キー("0", "1", "2", "foo"
)を反復します。ここでもfor... in
ループはfoo
キーを反復します。ただしfor... of
、foo
プロパティの値(つまり)を反復しません"hello"
。なぜそんな感じなの?
要するに長い話:
ここでfor... of
ループをコンソールします。ログに記録する必要があります"3", "5", "7","hello"
が、ここではログに記録し"3", "5", "7"
ます。どうして ?
for ... of
はfor ... in
配列での使用に関する問題を修正するために言語に取り入れられました。Array.prototype
追加のプロパティを使用できるように修正することができるため、予期しない数値以外のキーを取得する可能性があるため、それらを反復するのは安全ではありません。
of
キーワード(for…ofループ)の複製ではない可能性があります。一般的な概要を尋ねるのではなく、機能の特定の動作について尋ねるからです。
for <key> in
」と「for <value> of
」を言うことに慣れ、IEがサポートしていないことに気付くfor..of