Eu sei o que é for... in
loop (itera sobre a chave), mas ouvi pela primeira vez sobrefor... of
(itera sobre valor).
Estou confuso com for... of
loop. 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... of
itera 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... in
loop itera sobre cada tecla ( "0", "1", "2", "foo"
). Aqui, o for... in
loop também itera sobre a foo
chave. Mas for... of
não itera sobre o valor da foo
propriedade, ou seja "hello"
. Por que é assim?
Em resumo:
Aqui eu console o for... of
loop. Ele deve registrar, "3", "5", "7","hello"
mas aqui ele registra "3", "5", "7"
. Por quê ?
for ... of
foi trazido para o idioma para corrigir os problemas de uso for ... in
com Arrays. Array.prototype
pode 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.
of
chave 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