Por que nesse java as variáveis são definidas com let e não var? São ferramentas diferentes?
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!
Por que nesse java as variáveis são definidas com let e não var? São ferramentas diferentes?
Anderson,
A diferença entre esses dois tipos de declaração é que a declaração com var permite que a variável seja declarada nos escopos global e local, já a let permite que a variável seja declarada nos escopos global, local e de bloco.
O escopo da variável é definido de acordo com o local que ela foi declarada.
Exemplo de escopo global:
Obs*: No escopo global as variáveis são declaradas no script (fora das funções) e podem ser acessadas por todas as funções e locais do script
var minhaVariavelGlobalComVar = 10;
let minhaVariavelGlobalComLet = 15
function func1(){
console.log(minhaVariavelGlobalComVar);
console.log(minhaVariavelGlobalComLet);
}
function func2(){
console.log(minhaVariavelGlobalComVar);
console.log(minhaVariavelGlobalComLet);
}
function func3(){
console.log(minhaVariavelGlobalComVar);
console.log(minhaVariavelGlobalComLet);
}
console.log(minhaVariavelGlobalComVar);
console.log(minhaVariavelGlobalComLet);Exemplo de escopo local:
Obs*: No escopo local as variáveis declaradas dentro de funções podem ser acessadas somente de dentro da função que foram declaradas.
// Consegue manipular a variável victor
function func1(){
var victor = "Lima";
let hugo = "Costa";
console.log(victor);
console.log(hugo);
}
// NÃO Consegue manipular a variável victor e nem a hugo
function func2(){
console.log(victor);
console.log(hugo);
}
// NÃO Consegue manipular a variável victor e nem a hugo
function func3(){
console.log(victor);
console.log(hugo);
}Exemplo de escopo bloco:
Obs*: Somente a declaração do let pode ser utilizada no escopo de bloco. No escopo de bloco as variáveis declaradas podem ser acessadas somente de dentro do bloco que foram declaradas.
var condicao = true;
if(condicao){
let minhaVariavel = 10;
// É possível manipular a let, pois ela foi declarada
// neste bloco
console.log(minhaVariavel);
}
// ERRO, Não é possível acessar a variável, pois ela tem escopo de bloco.
function func1(){
console.log(minhaVariavel);
}
// ERRO, Não é possível acessar a variável, pois ela tem escopo de bloco.
function func2(){
console.log(minhaVariavel);
}
// ERRO, Não é possível acessar a variável, pois ela tem escopo de bloco.
function func3(){
console.log(minhaVariavel);
}
// ERRO, Não é possível acessar a variável, pois ela tem escopo de bloco.
console.log(minhaVariavel);Esses exeplos foram extraídos do seguinte site: https://blog.schoolofnet.com/diferenca-entre-var-e-let-no-javascript/#:~:text=Quando%20voc%C3%AA%20declara%20uma%20vari%C3%A1vel,global%2C%20local%20e%20de%20bloco.
Entendi, muito obrigado.
O ideal é usar o var então e só usar let quando você precisa que aquela variável seja acessada apenas naquele bloco.
Anderson.
Usar o let é uma tendência hoje. Na verdade pensando em um código temos que deixá-lo sempre o melhor possível pensando em futuras e prováveis custumizações. Dessa forma nunca saberemos quais serão as necesidades futuras. Sendo assim acredito que sempre usar o let seria o ideal. Também acredito que a utilização do var um passrá a ser menos usual.