Eu pensei que declarava variável com o termo (let) e não do termo (const)
Eu pensei que declarava variável com o termo (let) e não do termo (const)
Oi, Thiago! Tudo bem?
Então, as duas formas estão corretas mas os tipos de declarações são usadas em contextos diferentes. Vamos aos casos:
São as variáveis de escopo global. O que isso quer dizer? Bem, escopo basicamente significa onde essas variáveis poderão ser utilizadas. O escopo é global quando uma variável var é declarada fora de uma função. Mas essa variável declarada com var também pode ser declaradas dentro de função, neste caso diz-se que ela tem escopo de função ou local. Exemplo:
var saudacaoOi = "Oi";
function saudacao() {
var saudacaoOla = "Olá";
}
No exemplo acima a variável saudacaoOi
tem escopo global, enquanto que a variável saudacaoOla
tem escopo de função. Se você der um console.log(saudacaoOla)
vai receber um erro, pois ela não está definida fora do escopo da função.
Deve-se ter muito cuidado em utilizar a declaração var. Exemplo:
var saudacaoOi = "Oi";
var numero = 4;
if (numero > 3) {
var saudacaoOi = "Oi, fulano";
}
console.log(saudacaoOi) // o resultado será "Oi fulano"
Isso acontece porque variáveis declaradas com var podem ser atualizadas e reatribuídas, podendo gerar casos como esse.
As declarações do tipo let são uma espécie de upgrade das declarações do tipo var. Elas resolvem o problema do var que citamos acima.
Variáveis do tipo let tem escopo de bloco. O que é isso? Podemos entender por bloco qualque trecho de código entre chaves ({}
). Assim, uma váriavel let estará disponível somente dentro daquele bloco. Exemplo:
let saudacao = "Olá";
let numero = 4;
if (numero > 3) {
let saudacaoOi = "Oi, fulano";
console.log(saudacaoOi); // o resultado será "Oi fulano"
}
console.log(saudacaoOi) // o resultado será um erro informando que a váriável saudacaoOi não está definida
As variáveis let podem ser atualizadas mas não declaradas novamente dentro do seu escopo. Pórem se os escopos forem diferentes, aí não tem problema. Exemplo:
// pode ser atualizada mas não declarada novamente
let saudacao = "Olá";
saudacao = "Olá mundo";
// se declarada a mesma variável em escopos diferentes não há problema, pois as instâncias são diferentes.
let saudacao = "Olá";
if (true) {
let saudacao = "Olá, fulano";
console.log(saudacaoOi); // o resultado será "Olá, fulano"
}
console.log(saudacao) // o resultado será "Olá"
Por fim, as declarações do tipo const mantém os valores constantes. Possuem escopo de bloco assim como as declarações let , e só podem ser acessadas neste escopo.
Porém, diferente das delarações let as declarações const não podem ser atualizadas nem declaradas novamente. Isso significa que o valor de uma variável const se mantém constante dentro do seu escopo. Exemplo:
// isso não é possível fazer
const saudacao = "Olá";
const saudacao = "Olá mundo";
// isso não é possível fazer
const saudacao = "Olá";
saudacao = "Olá mundo";
Portanto, cada variável do declarada como const deve ser inicializada no momento da declaração.
Puxa, muita informação né?
Se você quiser seguir uma trilha de estudos focada em dominar o JavaScript e conhecer ali um superset dessa linguagem que tá bem popular, o Typescript. Eu vou deixar o link da que eu criei bem abaixo:
Abraços e bons estudos!
Obrigado pela informação amigo, grato!