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