Я знаю, що таке for... in
цикл (він повторюється над ключем), але вперше почув про for... of
це (він повторює значення).
Я плутаю for... of
петлю. Я не отримав adject. Це код нижче:
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 <key> in
for <value> of
for..of