Eu sei o que é for... inloop (itera sobre a chave), mas ouvi pela primeira vez sobrefor... of (itera sobre valor).
Estou confuso com for... ofloop. Não recebi um adjetivo. Este é o código abaixo:
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"
}
O que eu consegui é que for... ofitera sobre os valores da propriedade. Então, por que ele não registra (retorna) em "3", "5", "7", "hello"vez de "3", "5", "7"? mas o for... inloop itera sobre cada tecla ( "0", "1", "2", "foo"). Aqui, o for... inloop também itera sobre a foochave. Mas for... ofnão itera sobre o valor da foopropriedade, ou seja "hello". Por que é assim?
Em resumo:
Aqui eu console o for... ofloop. Ele deve registrar, "3", "5", "7","hello"mas aqui ele registra "3", "5", "7". Por quê ?
for ... offoi trazido para o idioma para corrigir os problemas de uso for ... incom Arrays. Array.prototypepode ser alterado de maneira que propriedades extras estejam disponíveis, tornando inseguro iterá-las, pois você pode obter chaves não numéricas que não esperava.
ofchave JavaScript (para ... de loops) , pois pergunta sobre um comportamento específico do recurso, em vez de solicitar uma visão geral.
for <key> in" e " for <value> of" e perceba que o IE não oferece suportefor..of
