Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Testando var e let

no codigo abaixo, quando uso var em vez de let, o valor armazenado entra como string em "nascimento". como o let sabe que estou digitando um numero e não uma string no prompt? por que a var reconhece tudo como string ?


<meta charset="UTF-8">
<script>

let nascimento =  prompt("Qual o ano do seu nascimento?");

let anoAtual= 2023;

document.write("Você tem " + (anoAtual - nascimento) + " Anos")
</script>
5 respostas
solução!

Na verdade, o let não sabe que você está digitando um número em vez de uma string no prompt. O que acontece é que, quando você digita um número no prompt, o valor é retornado como uma string pelo método prompt.

No entanto, quando você faz a subtração anoAtual - nascimento na linha seguinte, o JavaScript tenta fazer uma operação aritmética e, como anoAtual é um número, o JavaScript tenta converter a string armazenada na variável nascimento em um número para que a operação possa ser realizada.

Opa, boa tarde! Vou dar uma resposta breve e logo em seguida uma resposta completa (não se assuste, tive que pesquisar um pouco pra dar a resposta completa rsrs)

Resposta breve: O 'let' realiza uma verificação de tipo estrita (strict mode) para evitar surpresas indesejadas. O var é uma palavra-chave mais antiga no javascript, o let é mais moderno, recente. E o var não realiza essa verificação de tipo estrita. Mas até onde sei, depende do contexto de quando é melhor usar let ou var... Ou seja, o let ele interpreta como String sim... mas quando necessário ele converte de forma automática para número, em uma operação matemática por exemplo! Se ficou confuso, vou enviar mais uma resposta só que mais completa e vou fazer uma pesquisa melhor sobre... me da uns minutos kk

interessante.. grato pelas respostas. o let é digamos mais inteligente então.

*De toda forma isso ta sendo um estudo pra mim, aprendi bastante com essa pesquisa toda! *Já adianto que as vantagens do var não parecem ser realmente vantagens! hahah São situações muito específicas, que na minha mente de iniciante de programação não consigo imaginar claramente em uma utilização mais recomendada que o let, por mais que eu tenha procurado. *Let e const > var !


Var vs Let

Vantagens do 'var':

1 - Ao contrário do let que tem escopo de bloco, ou seja, fora daquele bloco não será reconhecido o valor 'x', o var tem escopo global ou escopo de função. É bem útil quando você precisa acessar a variável globalmente no seu código ou em todo escopo de alguma função.

exemplo de var sendo útil e let/const não servindo:

  function exemplo() {
  var nomePedro = "Pedro";
  const nomeWesley = "Wesley";
  if (true) {
    var idadePedro = 24;
    let idadeWesley = 26;
    console.log(nomePedro); // "Pedro"
    console.log(idadePedro); // 24
    console.log(nomeWesley); // "Wesley"
    console.log(idadeWesley); // 26
  }
  console.log(nomePedro); // "Pedro"
  console.log(idadePedro); // 24 (acessível fora do bloco if)
  console.log(nomeWesley); // "Wesley"
  console.log(idadeWesley); // Erro de referência (não acessível fora do bloco if)
}

exemplo();

**console.log(nomePedro); // "Pedro" (acessível globalmente)
console.log(idadePedro); // 24 (acessível globalmente)**

2 - Em código legado o var é necessário por ser a única palavra-chave disponível em versões mais antigas do Javascript.

3 - "Hoisting" - Para entender esse aqui exigiu um pouco de atenção minha hahah Vou começar com o exemplo primeiro.

exemplo:

**console.log(nome);** // undefined, mas reconheceu a variável "NOME" antes mesmo de ter sido declarada. (Só não reconheceu o valor armazenado nela, pois ainda não havia sido armazenado).
**var nome = "Wesley";** // declaração e atribuição de valor dentro da variável.
**console.log(nome);** // Retorna "Wesley"

Conclusão: Reconhece que a variável foi declarada antes da própria declaração da variável. Apesar de isso ser considerada uma vantagem é desvantagem também porque torna a depuração de erros mais difícil e pode surgir comportamentos inesperados.

4 - O 'var' oferece uma possibilidade de redeclaração de variável, pode ser declarada a mesma variável várias vezes no mesmo código sem gerar erro, caso seja feito corretamente.

*As desvantagens do 'var' é uma maior dificuldade de encontrar a causa do erro e também poder gerar comportamentos ou resultados inesperados.


Vantagens do let

1 - O let é mais moderno. É recomendado na maioria das vezes a utilização de 'let' ou 'const' por ser mais restrito e, portanto, de melhor identificação de erros. (duas vantagens aqui)

2 - Evita confusões por ser de declaração única. Declarar uma única vez uma variável torna o código mais legível e garante que as variáveis sejam usadas de forma mais consistente.

3 - Ser de escopo de bloco e de reatribuição controlada também é uma vantagem. Evita que a variável seja acidentalmente reatribuída, facilita rastreamento e correção de bugs.


  • Resumi bastante as vantagens do let pois são vantagens bem claras, são basicamente resumidas em:

  • Melhor entendimento do código

  • Evita surpresas inesperadas

  • Melhor rastreamento e correção de possíveis erros

    Tanto let quanto const são variáveis mais recentes no javascript e mais recomendadas de serem usadas do que o var. Eu particularmente não achei que as vantagens do var são realmente vantagens rsrs

Ficou tudo desorganizado!!! meu deus... organizei direitinho e quando enviei ficou esquisito rsrs editei a resposta e tentei organizar melhor agr