1
resposta

[Dúvida] Projeto Ingresso: Escopo de variáveis

Sobre o projeto ingresso: Pelo que tinha visto em outro curso (JavaScript: explorando a linguagem) eu havia entendido que, ao declarar a variável let qtd na função comprar(), ela teria escopo de função e não poderia ser trabalhada pelas funções comprarPista(), comprarInferior() e comprarSuperior(). Porém funcionou normalmente, o que eu deixei passar na teoria?

1 resposta

Oi Jefferson! Tudo bem?

Vamos esclarecer isso!

No JavaScript, quando você declara uma variável com let dentro de uma função, ela realmente tem escopo de função, ou seja, só é acessível dentro daquela função. No entanto, se você está passando essa variável como argumento para outras funções, como comprarPista(qtd), você está efetivamente passando o valor da variável qtd para essas funções. Isso significa que as funções comprarPista(), comprarInferior(), e comprarSuperior() não estão acessando a variável qtd diretamente, mas sim o valor que foi passado para elas.

No seu caso, a função comprar() está chamando comprarPista(qtd), passando o valor de qtd como argumento. Dentro de comprarPista(), esse valor é recebido como um parâmetro, que também é chamado de qtd, mas é independente da variável qtd da função comprar(). Isso é perfeitamente válido e é uma prática comum em programação.

Aqui está um exemplo simplificado para ilustrar:

function comprar() {
    let qtd = 10; // Escopo da função comprar
    comprarPista(qtd); // Passa o valor de qtd para comprarPista
}

function comprarPista(qtd) {
    console.log(qtd); // Acessa o valor passado, não a variável original
}

Espero que isso ajude a esclarecer o que você estava deixando passar. É sempre bom revisar como os valores são passados entre funções e como o escopo das variáveis funciona.

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