3
respostas

Variavel let

Nao foi explicado o porque de nao conseguir acessar a variavel area declarada como let, logo apos o erro no console o rapaz diz: "agora vimos que agnt consegue usar o let". O java script nao consegue puxar um let pra dente do bloco? Se ele nao consegue como o autocompete é acionado la dentro?

3 respostas

Boa noite Erick, tudo beleza? Cara não vi esse vídeo em questão, porém assim, quando você declara uma variável usando let ela fica visível apenas no escopo atual não podendo ser acessada fora do seu escopo, diferente do var que deixa a variável global. Deu para entender ai cara?. Qualquer coisa manda ai que te ajudo rapaz... Segue um link sobre o assunto https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/let

O let não pode ser usado dentro de outro método, ou fora do metódo na qual está. Enquanto a var é de uso global.

ex:

let a =5;

for ( let i =0 ; i < a; i++){

console.log("Vai quebrar" + i);

}

console.log(i);

No caso a variavel a consegue ser utilizada dentro do for por estar acima, mas a variavel i da erro, pois foi declarada dentro do for.

Fala Erick. Então, aquele erro que deu ali, quer dizer que eles atribuiram um valor a variável "area" e somente depois inicializaram com o "let". Quando corta o vídeo, aparece com o problema resolvido, ou seja, com o "let area;" declarando a variável e somente depois reatribuindo o valor. Porém como foi declarado "area" com o "let" no escopo global (ou seja, fora das funções), o node consegue acessar o valor de area. Porém se eles tivesses atribuido o "let area = altura * comprimento" dentro do escopo do "if", iria dar erro, dizendo que area não foi definida. Exemplo:

let altura = 5;
let comprimento = 7;
let forma = "retângulo";

if (forma === "retângulo"){
    let area = altura * comprimento;
} else {
    let area = (altura *comprimento) / 2;
}

console.log(area);

saida = Uncaught ReferenceError: area is not defined.

Isso seria resolvido se tivessem declarado "area" com "var", assim:

let altura = 5;
let comprimento = 7;
let forma = "retângulo";

if (forma === "retângulo"){
    var area = altura * comprimento;
} else {
    var area = (altura *comprimento) / 2;
}

console.log(area);

saida = 35

Justamente porque "var" declara a variável no escopo global.