Diferenças entre for…of e for…in

Você conhece o loop For…Of?

Este loop é específico para iterar entre os elementos de uma lista. Ele percorre objetos iterativos, chamando uma função personalizada com instruções a serem executadas para o valor de cada objeto distinto.

Sintaxe:

for (variavel of iteravel){
   //Seu código aqui
}

Você pode fazer a leitura como: “Para cada item de uma lista”. No exemplo, dia começará com o valor “segunda” e o último valor será “sexta”.

O for…of percorre a lista de forma crescente, então ele irá mostrar de forma crescente os valores do seu vetor. Simples, não?

E o for..in?

O laço de repetição for…in interage sobre as propriedades enumeradas de um objeto, em sua ordem original de inserção. O laço pode ser executado para cada uma das propriedades distintas do seu objeto. É recomendável não adicionar, remover ou alterar propriedades do objeto durante a execução do laço for…in, pois, se uma propriedade é deletada durante a execução do loop, ela se torna indisponível para ser acessada depois. O loop for in retorna uma string com o nome das propriedades e seus respectivos valores

A sua sintaxe é:

for (variavel in objeto) {
    //Seu código aqui
}

Mas e quais são as suas diferenças entre os dois laços?

for…in

O loop for…in é usado para percorrer as propriedades de um objeto. Por exemplo:

let objetoComum = {
    nome: 'Nome',
    idade: '30'
}
for (let propriedade in objetoComum){
    console.log("Propriedade " + propriedade + "=" + objetoComum[propriedade])
}

for…of

Já o loop for…of é usado para percorrer objetos iteráveis, como Array, Map etc.

Utilizando o mesmo exemplo, mas usando o for…of:

let objetoComum = {
    nome: 'Nome',
    idade: '30'
}
for (let propriedade of objetoComum){
    console.log(propriedade)
}

Teremos a saída:

objetoComum is not iterable

Temos essa saída pois o nosso objeto não é iterável.

Agora, se obtivermos um objeto iterável, seria o seguinte:

let arrayComum = [10, 20, 30, 40, 50]

for (let elemento of arrayComum){
    console.log(elemento)
}

Nossa saída seria:

10
20
30
40
50

Gostou deste artigo? Comente abaixo!