← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

Analise o código Javascritp a seguir. let a = {x: 1}; let b = {x: 2}; let c = {x: 3}; let arr = [a, b, c]; arr.forEach((obj) => { obj.x += 1; }); console.log(a.x, b.x, c.x); O resultado exibido ao rodar esse código será

Gabarito: B

Esse código trabalha com objetos em JavaScript e mostra um ponto importante: variáveis como a, b e c guardam referências para objetos, não cópias independentes dos valores internos. Quando você faz arr = [a, b, c], o vetor passa a apontar para esses mesmos objetos. Depois, o forEach percorre cada objeto e executa obj.x += 1, ou seja, altera diretamente a propriedade x de cada um deles. Repare no detalhe: não houve criação de novos objetos dentro do laço. O código apenas modificou os existentes. Por isso, a.x sai de 1 para 2, b.x de 2 para 3 e c.x de 3 para 4. No fim, o console.log mostra exatamente os valores já alterados. Então o resultado impresso é 2 3 4, que corresponde ao gabarito B. Em JavaScript, esse comportamento é bem comum com objetos e arrays, porque eles são manipulados por referência. É aquele clássico caso em que o código parece inocente, mas mexe nos dados originais sem pedir licença.

Continue treinando

Questões relacionadas