1
resposta

Var, let e const

Então, basicamente eu decidi fazer algo seguindo o exercício apresentado pelo professor misturado com a proposta no final da aula - calcular o salário de todos funcionários de uma empresa. Em resumo, criei um código que recebe o salário de todos os funcionários da empresa e informa qual é a média dos salários daquela empresa.

<meta charset="UTF-8">

<script>
    function escreva(texto) {
        document.write(texto);
        pulaLinha();
    }

    function pulaLinha() {
        document.write("<br><hr>");
    }

    var quantidadeDeFuncionarios = parseInt(prompt("Quantidade de funcionários da empresa"));
    var totalPago = 0; 

    for(i = 0; i < quantidadeDeFuncionarios; i++) {

        while(isNaN(salario)) // força o usuário a inserir um valor int
        {
            var salario = parseInt(prompt("Informe seu salário"));
        }

        var totalPago = totalPago + salario;
    }

    var mediaDoSalario = totalPago / quantidadeDeFuncionarios;
    escreva("A média dos salários pagos na empresa é de: " + mediaDoSalario);
</script>

Minha dúvida é sobre js na verdade, nem tanto sobre a lógica de programação. Um pessoal comentou que hoje em dia não se usa mais var, só let e const, então comecei a aplicar let nos meus códigos no lugar de var, porém esse código em específico não funcionava de jeito nenhum usando let para definir as variáveis. Se alguém puder explicar, ficaria muito grato.

Obs: já li o conteúdo do Alura sobre isso mas não consegui entender.

1 resposta

Oii, Gabriel! Tudo bem?

Peço desculpas pela demora em responder sua dúvida.

Var, let e const, são três formas diferentes de declarar uma variável no javascript. E cada uma dessas palavras chaves, possui uma propriedade específica:

  • var: Ao declarar uma variável do tipo var, ela será visível em todo o código, pois ela possui escopo global, então, todo o código tem acesso a essa variável, independente de estar dentro ou fora de uma função. Fora isso, podemos redeclarar a variável, ou seja, em um momento posso ter var numero = 10 e em outro trecho do mesmo código, ter uma nova declaração da mesma variável até mesmo com valor diferente, por exemplo: var numero = 20 e isso não irá gerar nenhum tipo de erro.

  • let: Ao declarar uma variável do tipo let, ela será visível apenas dentro do bloco de código que ela está inserida, ou seja, não é visível para todo o código, sendo assim, dizemos que essa variável tem um escopo local. Outra característica é que variável do tipo let não pode ser redeclarada.

  • const: Variáveis do tipo const, não podem ser modificadas, são variáveis que geralmente possuem um valor pré-determinado, como por exemplo o número Pi. Este tipo de variável, assim como o tipo let, também possui escopo local e não pode ser redeclarada.

Para ficar mais claro, na tabela abaixo, há as principais diferenças entre esses tipos:

CaracterísticaVarLetConst
RedeclaraçãoSimNãoNão
ReatribuiçãoSimSimNão
Escopo GlobalSimNãoNão

No caso do seu código, se alterássemos todas as variáveis para let teríamos dois problemas:

O primeiro é que como a variável salário não foi definida antes de ser testada na cláusula while, não conseguiríamos utilizá-la, pois, ao utilizar let, antes de utilizar qualquer variável, ela primeiramente deve ter sido criada (declarada).

O segundo, é que a variável totalPago foi criada através do var duas vezes, mas, utilizando let isso não é possível. Com o let, a variável deve ser criada apenas uma única vez.

Com a correção dos pontos citados acima, o código completo fica do seguinte modo:

<meta charset="UTF-8">

<script>
    function escreva(texto) {
        document.write(texto);
        pulaLinha();
    }

    function pulaLinha() {
        document.write("<br><hr>");
    }

    const quantidadeDeFuncionarios = parseInt(prompt("Quantidade de funcionários da empresa"));
    let totalPago = 0; 

    for(i = 0; i < quantidadeDeFuncionarios; i++) {
        let salario = NaN;
        while(isNaN(salario)) // força o usuário a inserir um valor int
        {
            salario = parseInt(prompt("Informe seu salário"));
        }

        totalPago = totalPago + salario;
    }

    const mediaDoSalario = totalPago / quantidadeDeFuncionarios;
    escreva("A média dos salários pagos na empresa é de: " + mediaDoSalario);
</script>

Para aprofundar o seu conhecimento sobre estes tipos de variáveis, recomendo que leia o seguinte artigo da nossa Plataforma:

Caso queira um conteúdo em vídeo para entender um pouco mais sobre a diferenciação entre var, let e const, recomendo que assista o curso JavaScript: tipos, variáveis e funções, no capítulo Var, let e const.

Qualquer dúvida estou por aqui!

Abraços ;)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!