Questão nº 38

Questão de Tecnologia da Informação · FGV TCE-TO 2022 (nº 38)

FGV2022Auditor de Controle Externo - Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Bver comentário ↓

Analise o script JavaScript a seguir.

```
<script>
........
let s = "";
x.forEach(f);
alert(s);
function f(value, index, array) {
s += index + " " + value;
}
</script>
```

Dado que, na execução desse script, o comando alert exibiu os valores

0 451 42 93 164 25

é correto afirmar que o trecho pontilhado foi substituído por:

Resposta comentada

Gabarito Alternativa B

O forEach percorre cada elemento do array e chama a função f passando três argumentos: o valor atual, o índice (posição) e o próprio array. No seu script, a função f concatena na string s o índice e o valor, sem separador. O alert exibiu 0 451 42 93 164 25, ou seja, o índice 0 seguido do valor 451, depois o índice 1 seguido do valor 42, e assim por diante. A pegadinha é que o forEach ignora "buracos" (espaços vazios) no array, mas não ignora elementos undefined ou null — e aqui o array precisa ter exatamente 5 elementos, com índices de 0 a 4.

  • (A) Incorreta: Esse array tem 6 elementos, então o forEach chamaria f 6 vezes, gerando 0 11 451 42 93 164 25 (índice 0 valor 1, índice 1 valor 451, etc.), mas o alert mostrou apenas 5 pares índice-valor, começando com 0 451 — não bate.
  • (B) Correta: O array [45, 4, 9, 16, 25] tem 5 elementos. O forEach chama f para cada um: índice 0 com valor 45, índice 1 com valor 4, índice 2 com valor 9, índice 3 com valor 16, índice 4 com valor 25. A concatenação s += index + " " + value gera exatamente 0 451 42 93 164 25 — repare que o valor 45 no índice 0 vira 0 45, e o valor 4 no índice 1 vira 1 4, formando 0 451 42 93 164 25 quando tudo é unido sem espaços extras. É o único array cujos valores, quando precedidos pelo índice, produzem a string exibida.
  • (C) Incorreta: Tem 7 elementos, então geraria 7 pares índice-valor, e os valores não correspondem à sequência (ex.: índice 0 valor 45, índice 1 valor 1, etc.), resultando em 0 451 42 93 16 42 5 — não é o alert.
  • (D) Incorreta: Tem 5 elementos, mas os valores são [451, 42, 93, 164, 25]. O forEach geraria 0 4511 422 933 1644 25 (índice 0 valor 451, índice 1 valor 42, etc.), que não bate com o alert — o alert mostra 0 451 (índice 0 valor 45, não 451) e depois 42 (índice 1 valor 4, não 42).
  • (E) Incorreta: Tem 4 elementos, então geraria apenas 4 pares índice-valor, mas o alert mostra 5 pares (índices 0 a 4). Além disso, os valores não correspondem (ex.: índice 0 valor 451, índice 1 valor 4293, etc.).

Armadilha da banca: A alternativa D é a mais tentadora porque parece óbvio que o alert mostra os valores do array diretamente (451, 42, 93, 164, 25), mas esquece que o forEach prefixa o índice em cada iteração. O alert 0 451 42 93 164 25 não é uma lista de valores, é a concatenação de índice + valor sem separador — então o primeiro par é 0 (índice) + 45 (valor) = 045, que vira 0 45 na string, e o segundo par é 1 (índice) + 4 (valor) = 14, juntando tudo forma 0 451 42 93 164 25. Quem escolhe D cai na pegadinha de achar que o array é [451, 42, 93, 164, 25], mas aí o alert seria 0 4511 422 933 1644 25.

Fonte: FGV TCE-TO 2022 Auditor de Controle Externo - Tecnologia da Informaçã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