В чем разница между (для… in) и (для… of) операторов в JavaScript?

Я знаю что такое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 ключ. но для ... не итератор по стоимостиfoo свойство т.е."hello". Почему это так?

Короче говоря:

здесь я утешаюfor... of петля. это должно быть лог"3", "5", "7","hello" но здесь это логи"3", "5", "7", Зачем ?

Пример ссылки

Ответы на вопрос(10)

Ваш ответ на вопрос