← Questões de Programação

Programação · FGV · 2021

Questão comentada de Programação

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:

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.

Continue treinando

Questões relacionadas