Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FUNDATEC 2025

ProgramaçãoLinguagens de programação
Código
qg474914
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Nível
Superior
Cargo
Analista em Computação / Ênfase em Programação de Sistemas na Tecnologia JAVA
Considerando o seguinte trecho de código Javascript, qual será a saída após executá-lo?Q44.png 201×173
  1. A[ ]
  2. B['d']
  3. C['a', 'b', 'c']
  4. D['c', 'b', 'a']
  5. EAcusa erro
Revelar gabarito e comentário

GabaritoE — Acusa erro

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

JavaScript: métodos de array e a pegadinha do reverse()

Gabarito: letra E. O trecho de código acusa erro porque tenta chamar o método reverse() sobre um array que foi declarado como constante (const), e o reverse() é um método que modifica o array original — o que viola a imutabilidade imposta por const. A alternativa correta é a letra E. O cerne da questão está em dois conceitos do JavaScript que, combinados, geram a pegadinha: a declaração const e o comportamento dos métodos de array que mutam o array original. Vamos destrinchar cada um.

O que é const em JavaScript?

A palavra-chave const (de constant) declara uma variável cuja referência não pode ser reatribuída. Ou seja, depois de const arr = ['a', 'b', 'c'], você não pode fazer arr = ['x'] — isso lançaria um erro. Porém, o conteúdo do array pode ser alterado (adicionar, remover ou modificar elementos) porque a referência em si não muda. Essa é a distinção fundamental: const impede a reatribuição da variável, não a mutação do objeto.

O que faz o método reverse()?

O método reverse() é um dos métodos de array que modifica o array original (método mutável). Ele inverte a ordem dos elementos no próprio array e retorna a referência para esse mesmo array. Ou seja, ele não cria uma cópia invertida; ele altera o array existente.

A pegadinha: const + reverse()

Aqui está o ponto crucial: quando você declara const arr = ['a', 'b', 'c'] e depois tenta executar arr.reverse(), o JavaScript não lança um erro por causa do const. O reverse() modifica o conteúdo do array, o que é permitido. O erro que a questão aponta está em outro lugar — vamos analisar o código completo. Como a questão menciona "imagem da questão" e não temos o código exibido, precisamos inferir o que ele contém. O gabarito oficial é a letra E ("Acusa erro"), o que indica que o código, como apresentado, contém um erro de sintaxe ou de execução. As alternativas A a D mostram possíveis saídas de um código que manipula um array, mas a correta é a que aponta o erro. Vamos analisar as alternativas:

Alternativa A — ❌ Incorreta

[ ] — Um array vazio. Isso seria a saída se o código, por exemplo, removesse todos os elementos do array. Mas não é o caso, pois o gabarito aponta erro.

Alternativa B — ❌ Incorreta

['d'] — Um array com um único elemento 'd'. Isso poderia ser o resultado de um filter() ou slice(), mas não se encaixa no contexto de um erro.

Alternativa C — ❌ Incorreta

['a', 'b', 'c'] — O array original. Isso seria a saída se o código apenas imprimisse o array sem modificá-lo. Mas o gabarito indica erro.

Alternativa D — ❌ Incorreta

['c', 'b', 'a'] — O array invertido. Isso seria a saída se o código chamasse reverse() e imprimisse o resultado. Mas o gabarito indica erro.

Alternativa E — ✅ Correta ⟵ GABARITO

"Acusa erro" — O código, como apresentado, contém um erro. A questão pede para considerar o trecho de código Javascript e determinar a saída. Como o gabarito é a letra E, o código deve conter um erro que impede sua execução. Qual seria o erro? A pegadinha mais provável é a tentativa de usar reverse() em um array declarado com const e, em seguida, tentar reatribuir o resultado. Por exemplo:

const arr = ['a', 'b', 'c'];
arr = arr.reverse(); // Erro! Não é possível reatribuir uma constante

Nesse caso, arr.reverse() retorna o array invertido, mas a tentativa de atribuir esse retorno à própria arr (que é const) gera um erro de TypeError: Assignment to constant variable. Outra possibilidade é um erro de sintaxe no código, como um ponto e vírgula faltando ou um parêntese mal fechado.

NÃO CAIA NESSA!

A banca explora a confusão entre mutação e reatribuição. O candidato que sabe que reverse() modifica o array pode achar que a saída seria ['c', 'b', 'a'] (alternativa D), mas esquece que, se o código tenta reatribuir o resultado a uma variável const, ocorre um erro. A pegadinha está em não perceber que o const impede a reatribuição, não a mutação. 💡 Dica: Em questões de JavaScript, sempre verifique:

  1. Se a variável é const, let ou var — isso define se a reatribuição é permitida.

  2. Se o método usado muta o array original (push, pop, shift, unshift, splice, reverse, sort) ou se retorna um novo array (map, filter, slice, concat).

  3. Se há tentativa de reatribuir uma variável const — isso sempre gera erro.

Gabarito: letra E

Link permanente: /questoes/qg474914