Considere o código JavaScript a seguir. let txt = ""; function funcao(value, index, array) { if (index % 2 == 0) {txt += value}; } function xpto (x) { x.forEach(funcao); return txt; } alert (xpto([0, 1, 1, 2, 3, 5])); A execução desse código provoca a exibição de:
- A)011235
Errada, porque o código não concatena todos os elementos do array, apenas os que estão em índices pares.
- B)013
Certa, pois os índices 0, 2 e 4 correspondem aos valores 0, 1 e 3, formando 013.
- C)125
Errada, porque 125 ignora o primeiro elemento e também não respeita a regra dos índices pares.
- D)532110
Errada, pois o código não inverte a sequência nem monta essa concatenação.
- E)null
Errada, já que txt recebe uma string com os elementos selecionados e não permanece nulo.
Gabarito: B
Aqui a chave é entender o que o forEach faz com o índice de cada elemento do array. A função funcao recebe valor, index e array, e só adiciona o valor a txt quando o índice é par, isto é, quando index % 2 == 0. Em outras palavras, ela “seleciona” os elementos nas posições 0, 2 e 4 do vetor. No array [0, 1, 1, 2, 3, 5], os índices pares são 0, 2 e 4. Os valores correspondentes são 0, 1 e 3. Como txt começa vazio, ele vai sendo montado nessa ordem: primeiro '0', depois '01', depois '013'. A função xpto chama x.forEach(funcao) e depois retorna txt. Logo, o alert exibe exatamente o conteúdo acumulado durante a iteração. Não tem mistério de retorno do forEach, porque ele não devolve um novo array nem interfere no resultado final aqui. Por isso, o gabarito B está correto: a saída exibida é 013. A questão testa leitura de callback, índice do array e a diferença entre filtrar mentalmente os elementos e observar a posição deles, que é o detalhe que costuma derrubar muita gente.