Questão de Programação — Linguagens de programação — FUNDATEC 2025
Programação›Linguagens 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?
A[ ]
B['d']
C['a', 'b', 'c']
D['c', 'b', 'a']
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:
Se a variável é const, let ou var — isso define se a reatribuição é permitida.
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).
Se há tentativa de reatribuir uma variável const — isso sempre gera erro.