Questão de Programação — JavaScript — Quadrix 2024
- Código
- qg347823
- Banca
- Quadrix
- Órgão
- COREN-PR
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista de Tecnologia da Informação
- CCerto
- EErrado
GabaritoC — Certo
let e funções anônimasGabarito: ✅ CERTO. Em JavaScript, a palavra-chave let é utilizada para declarar variáveis com escopo de bloco, e não para definir funções diretamente. No entanto, como funções em JavaScript são valores de primeira classe, é perfeitamente válido armazenar uma função anônima em uma variável declarada com let, como em let minhaFuncao = function() { ... };. A afirmação está correta.
O cerne da questão está em dois conceitos fundamentais do JavaScript: a declaração de variáveis e o tratamento de funções como valores. Vamos explorar cada um deles.
Primeiro, a palavra-chave let (introduzida no ECMAScript 6, também conhecido como ES6) é usada para declarar variáveis com escopo de bloco. Isso significa que uma variável declarada com let dentro de um bloco { } (como um if, for, ou um bloco isolado) só é acessível dentro desse bloco. Isso difere da palavra-chave var, que tem escopo de função. O let também não permite a redeclaração da mesma variável no mesmo escopo, o que ajuda a evitar erros.
Segundo, e mais importante para esta questão, o JavaScript trata funções como cidadãos de primeira classe. Isso significa que funções são valores como qualquer outro (números, strings, objetos), podendo ser atribuídas a variáveis, passadas como argumentos para outras funções, retornadas de funções e armazenadas em estruturas de dados. Uma função anônima é simplesmente uma função que não possui um nome. Ela pode ser definida de várias formas, sendo a mais comum a function expression:
let minhaFuncao = function() {
console.log("Olá, mundo!");
};
minhaFuncao(); // Chama a função armazenada na variávelNeste exemplo, a palavra-chave let declara a variável minhaFuncao, e o valor atribuído a ela é uma função anônima. A função não tem nome próprio; ela é referenciada através da variável. Isso é exatamente o que a afirmação descreve: let não define funções diretamente (não é uma declaração de função como function minhaFuncao() {}), mas pode ser usada para armazenar uma função anônima em uma variável.
É importante distinguir isso de uma declaração de função (function declaration), que usa a palavra-chave function seguida de um nome:
function minhaFuncao() {
console.log("Olá, mundo!");
}Neste caso, a função tem um nome (minhaFuncao) e é definida diretamente. A palavra-chave let não participa da definição da função em si, apenas da criação da variável que a referencia.
A banca explora exatamente essa distinção: a palavra-chave let é um declarador de variável, não um declarador de função. Mas, como funções são valores, a variável pode armazenar uma função. A afirmação está correta ao afirmar que let "não define funções diretamente" (correto, pois não é uma declaração de função) "mas pode ser utilizada para armazenar funções anônimas em variáveis" (correto, pois funções são valores de primeira classe).
A banca pode tentar confundir o candidato ao sugerir que let é uma forma de declarar funções, como let function() {}. Isso é um erro de sintaxe. let é exclusivamente para variáveis. A pegadinha aqui é não confundir a declaração de função (que usa function) com a atribuição de uma função a uma variável (que usa let ou const).
Para resolver questões sobre declaração de variáveis e funções em JavaScript, lembre-se: let e const são para variáveis (com escopo de bloco), var é para variáveis (com escopo de função), e function é para declarar funções. Funções podem ser atribuídas a variáveis, mas a palavra-chave usada para a variável não é a que define a função.
Gabarito: ✅ CERTO
Link permanente: /questoes/qg347823