Questão nº 8

Questão de Desenvolvimento de Sistemas · FGV CGE-SC 2022 (nº 8)

FGV2022Auditor do Estado - Ciências da ComputaçãoDesenvolvimento de Sistemas
Gabarito: Bver comentário ↓

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á

Resposta comentada

Gabarito Alternativa B

Quando você coloca objetos em um array no JavaScript, o array guarda referências para esses objetos, não cópias. Isso significa que, se você modificar um objeto através de uma referência (como dentro de um `forEach`), você estará alterando o objeto original.

(A) Incorreta: Esta é a armadilha mais comum. Os objetos são passados por referência para o `forEach`, então as modificações feitas dentro do loop afetam os objetos originais.
(B) Correta: O `forEach` itera sobre o array `arr`. Para cada elemento, `obj` é uma referência ao objeto original (`a`, `b` ou `c`). A linha `obj.x += 1` incrementa a propriedade `x` do objeto original. Assim, `a.x` se torna `2`, `b.x` se torna `3`, e `c.x` se torna `4`.
(C) Incorreta: Os valores iniciais são `1, 2, 3` e são incrementados apenas uma vez cada.
(D) Incorreta: O `console.log(a.x, b.x, c.x)` imprime os valores separados por espaço, não como um array. Além disso, os valores estão incorretos.
(E) Incorreta: O `console.log` imprime valores separados por espaço, não um array.

Fonte: FGV CGE-SC 2022 Auditor do Estado - Ciências da Computação (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho