Questão de Programação — JavaScript — Quadrix 2025
- Código
- qg594713
- Banca
- Quadrix
- Órgão
- CFBio
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Desenvolvimento
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: CERTO. A instrução let func = function() {} cria uma função anônima (uma função sem nome) e a atribui à variável func, o que é perfeitamente válido em JavaScript. Isso é possível porque, nessa linguagem, as funções são tratadas como valores de primeira classe, podendo ser atribuídas a variáveis, passadas como argumentos ou retornadas de outras funções.
O conceito central aqui é o de função anônima e função de primeira classe. Em JavaScript, uma função pode ser definida sem um nome, criando uma expressão de função. Essa expressão pode ser armazenada em uma variável, como no exemplo do enunciado. A partir daí, a variável func pode ser invocada como uma função normal: func(). Essa é uma prática comum e fundamental na linguagem, especialmente para callbacks e para a criação de closures.
A atribuição de uma função a uma variável é uma das formas de se criar funções em JavaScript. Outra forma é a declaração de função, que usa a palavra-chave function seguida de um nome. A diferença prática entre as duas está no hoisting: declarações de função são içadas (hoisted) para o topo do escopo, podendo ser chamadas antes de sua definição no código; expressões de função, como a do enunciado, não são içadas, então a variável func só pode ser chamada após a linha de atribuição.
A banca explora aqui um conhecimento básico, mas essencial, da sintaxe da linguagem. A pegadinha, se houvesse, seria confundir a sintaxe de uma expressão de função com a de uma declaração de função, ou achar que a função anônima não pode ser atribuída a uma variável. No entanto, a afirmação do enunciado está correta e descreve exatamente o que o código faz.
A afirmação está correta. O código let func = function() {} define uma função anônima (sem nome) e a atribui à variável func. Isso é possível porque, em JavaScript, funções são valores de primeira classe, ou seja, podem ser tratadas como qualquer outro valor, sendo atribuídas a variáveis, passadas como argumentos ou retornadas de outras funções. A variável func passa a referenciar a função, podendo ser invocada com func().
Conceito de funções de primeira classe (ECMAScript):
"No JavaScript, as funções são de primeira classe, isto é, são objetos que possuem propriedades e métodos, e podem ser passados como argumentos, serem atribuídos a variáveis ou retornados como qualquer outro objeto."
A banca cobra aqui um conhecimento fundamental da linguagem: a diferença entre declaração de função (function nome() {}) e expressão de função (let func = function() {}). Enquanto a declaração é içada (hoisted) para o topo do escopo, a expressão não é, o que significa que a variável func só pode ser chamada após a linha de atribuição. Esse é um detalhe importante que diferencia as duas formas de criar funções.
Para fixar: declaração de função sofre hoisting (pode ser chamada antes da definição), enquanto expressão de função não sofre hoisting (só pode ser chamada após a atribuição). Essa é uma pegadinha clássica em provas de JavaScript.
Gabarito: CERTO
Link permanente: /questoes/qg594713