Eu pensei que declarava variável com o termo (let) e não do termo (const)
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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á definidaAs 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!