Solucionado (ver solução)
Solucionado
(ver solução)
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
solução!

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 ✓.