Analise as afirmações abaixo sobre declaração de variáveis: ...
I. let declara uma variável presa em um contexto, seja este dentro de uma função, seja dentro de um if.
II. É possível alterar o valor de uma variável const.
III. As declarações de variáveis utilizando var possuem escopo elevado, conhecido como hoisting.
Está(ão) correta(s) apenas a(s) afirmativa(s)
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - I e III.
A questão aborda o tema da declaração de variáveis em JavaScript, focando nos conceitos de escopo e hoisting. O entendimento destes conceitos é fundamental para o desenvolvimento de códigos consistentes e sem erros de execução relacionados ao uso de variáveis.
I. let declara uma variável presa em um contexto, seja este dentro de uma função, seja dentro de um if.
Esta afirmação é verdadeira. A palavra-chave let foi introduzida no ES6 (ECMAScript 2015) para permitir a declaração de variáveis com escopo de bloco, que é limitado a qualquer bloco de código delimitado por chaves ({}), como dentro de funções, blocos if, loops e outros.
II. É possível alterar o valor de uma variável const.
Esta afirmação é incorreta. A palavra-chave const é usada para declarar uma constante, o que significa que, uma vez atribuído um valor a ela, esse valor não pode ser alterado durante a execução do programa. No entanto, se a constante for um objeto ou array, os elementos ou propriedades do objeto podem ser alterados, mas a referência ao objeto ou array em si não pode.
III. As declarações de variáveis utilizando var possuem escopo elevado, conhecido como hoisting.
Esta afirmação é verdadeira. Ao utilizar var, a variável é sujeita ao hoisting, um comportamento do JavaScript onde as declarações de variáveis são movidas para o topo do seu escopo antes da execução do código. Isso significa que as variáveis podem ser utilizadas antes de serem explicitamente declaradas, ainda que o valor delas seja undefined até que a sua declaração seja alcançada na execução.
Portanto, a alternativa correta é a C, visto que as afirmativas I e III estão corretas, enquanto a afirmativa II está incorreta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Afirmativa II Há uma diferença entre constante e variável (tente associar como um antônimo do outro). Variável permite mudar por meio de reatribuirão, mas a constante não.
var declarations are globally scoped or function scoped while let and const are block scoped. var variables can be updated and re-declared within its scope; let variables can be updated but not re-declared; const variables can neither be updated nor re-declared. They are all hoisted to the top of their scope.
<script>
// Using const
const pi = 3.14159;
console.log("Value of pi:", pi);
// Using let
let count = 0;
console.log("Initial count:", count);
count = 5; // You can reassign a value to a variable declared with let
console.log("Updated count:", count);
// Using var (not recommended in modern JavaScript, use let or const instead)
var name = "John";
console.log("Name:", name);
name = "Alice"; // You can reassign a value to a variable declared with var
console.log("Updated name:", name);
// Block scope with let and var
function exampleScope() {
if (true) {
var varVariable = "I'm a var variable";
let letVariable = "I'm a let variable";
console.log("Inside if block - varVariable:", varVariable);
console.log("Inside if block - letVariable:", letVariable);
}
// varVariable is accessible outside the if block
console.log("Outside if block - varVariable:", varVariable);
// letVariable is NOT accessible outside the if block
// It has block scope and is limited to the if block
// Uncommenting the next line will result in an error:
// console.log("Outside if block - letVariable:", letVariable);
}
exampleScope();
</script>
https://stackoverflow.com/questions/76010295/when-should-you-use-var-let-or-const-in-javascript-code
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo