Questão nº 38
Questão de Tecnologia da Informação · FGV TCE-TO 2022 (nº 38)
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:
- Aconst x = [1, 451, 42, 93, 164, 25];
- Bconst x = [45, 4, 9, 16, 25]; (alternativa correta)
- Clet x = [45, 1, 42, 93, 16, 42, 5];
- Dvar x = [451, 42, 93, 164, 25];
- Evar x = [451, 4293, 93, 425];
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
forEachchamariaf6 vezes, gerando0 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 com0 451— não bate. - (B) Correta: O array
[45, 4, 9, 16, 25]tem 5 elementos. OforEachchamafpara 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çãos += index + " " + valuegera exatamente0 451 42 93 164 25— repare que o valor45no índice 0 vira0 45, e o valor4no índice 1 vira1 4, formando0 451 42 93 164 25quando 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]. OforEachgeraria0 4511 422 933 1644 25(índice 0 valor 451, índice 1 valor 42, etc.), que não bate com o alert — o alert mostra0 451(índice 0 valor 45, não 451) e depois42(í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.