3
respostas

[Dúvida] Variável declarada com let

Oi pessoal tudo bem?

Tenho uma duvida sobre a forma que declaramos uma variável. No caso até onde conseguir entender ao criar uma variável com essa palavra reservada ela funciona/poderia ser usada exclusivamente dentro do bloco de código a qual foi declarada. Pegando o exemplo da aula:

function comprar() {
    let tipo = document.getElementById('tipo-ingresso');
    let quantidade = parseInt(document.getElementById('qtd').value);

    //alert(tipo.value);
    //alert(quantidade.value)


    if (tipo.value == 'pista') {
        comprarPista(quantidade);
    } else if (tipo.value == 'superior') {
        comprarSuperior(quantidade);
    } else if (tipo.value == 'inferior') {
        comprarInferior(quantidade);
    }

}

function comprarPista(quantidade) {

    let quantidadePista = parseInt(document.getElementById('qtd-pista').textContent);
    if (quantidade > quantidadePista) {
        alert('Quantidade indisponível para Pista');
    } else {
        quantidadePista = quantidadePista - quantidade;
        document.getElementById('qtd-pista').textContent = quantidadePista;
        alert('Compra realizada com sucesso');
    }

}

Podemos notar que quantidade foi declarada dentro da função comprar. E foi passada como parâmetro na função comprarPista. Como isso é possivel?

3 respostas

Oi Matheus, tudo bem?

A variável quantidade, como você mencionou, foi criada dentro da função comprar, ou seja, foi criada dentro deste escopo. Seu entendimento está correto. ;)

Ai, a própria função comprar está chamando a função comprarPista, com o parâmetro quantidade, ou seja: a variável quantidade, criada dentro da função comprar foi passada como parâmetro para uma nova função, a função comprarPista, em um novo escopo, de uma nova função.

Não sei se ficou claro, mas um teste que você pode fazer é mudar o nome do parâmetro da função comprarPista, para, por exemplo, qtd:

function comprarPista(qtd)

e alterar as demais referências dentro da função comprarPista, de quantidade para qtd

A quantidade do escopo da comprarPista é igual da comprar, pois foi o parâmetro que passou, mas é outra quantidade à partir daí, no escopo da comprarPista, por isso a minha sugestão da alteração do nome da variável, para você observar este comportamente na prática.

Isto pode paracer um pouco confuso no começo no mesmo e espero ter conseguido ajudar com a minha resposta! =)

Aaah entendi, isso tem haver com herança? Vi por cima o assunto.

Oi Matheus, tudo bem?

Não, aqui é apenas o escopo das variáveis, você verá herança nos estudos de orientação a objetos

Espero ter ajudado!

=)