Considere o seguinte código JavaScript:let o = {one:1,two:2,...
Considere o seguinte código JavaScript:
let o = {one:1,two:2,three:3};
for(let p in o) console.log(p);
Ao final da execução, quais valores serão impressos?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: D - 'one', 'two', 'three'
Para compreender a resposta correta dessa questão, é importante entender como funciona o laço for...in no JavaScript. Este laço percorre todas as propriedades enumeráveis de um objeto que está sendo iterado. No caso do código apresentado, o objeto o possui as propriedades one, two e three, com os valores correspondentes 1, 2 e 3.
Quando usamos o laço for...in, a variável p vai assumir a chave (ou seja, o nome da propriedade) de cada propriedade do objeto a cada iteração. Portanto, o console.log dentro do laço irá imprimir o nome das propriedades, não seus valores.
A alternativa D é a correta porque ela lista exatamente os nomes das propriedades do objeto: 'one', 'two' e 'three'. Esses são os valores que serão impressos no console, cada um em uma linha separada, seguindo a ordem em que aparecem no objeto. As outras alternativas não estão corretas porque:
- A alternativa A lista os valores das propriedades, não seus nomes.
- A alternativa B retorna tanto os nomes quanto os valores em um formato que não é retornado pelo laço for...in.
- A alternativa C sugere que a letra 'p' seria impressa, o que seria o caso se 'p' estivesse entre aspas no console.log, mas como 'p' é a variável que representa as propriedades, ela não é impressa diretamente.
Portanto, a alternativa D é a correta porque reflete o comportamento do laço for...in em JavaScript ao iterar sobre as chaves de um objeto.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
GAB D
Para imprimir os valores em vez das chaves, precisaria fazer
- console.log( o[p] )
O foreach percorre as propriedades (chaves) e não os valores. O código apresena um objeto literal. Então nesse caso ele vai apenas mostrar as características desse objeto o.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo