Oi Rosemberg! Tudo bem?
Vou te explicar direitinho o que está acontecendo no seu código e por que a variável chute está sendo usada na função limparCampo().
O que está acontecendo no código?
Variável chute na função verificarChute:
- Na função
verificarChute, você declara a variável chute como local:
let chute = document.querySelector('input').value;
- Essa variável só existe dentro do escopo da função
verificarChute.
Uso da variável chute na função limparCampo:
Na função limparCampo, você está reutilizando o nome chute, mas não está declarando a variável com let, const ou var:
chute = document.querySelector('input');
Quando você faz isso, o JavaScript assume que chute é uma variável global (ou seja, acessível em todo o código). Isso acontece porque você não declarou chute com let, const ou var dentro da função limparCampo.
Por que isso funciona?
- Como você não declarou
chute com let, const ou var dentro de limparCampo, o JavaScript "vaza" essa variável para o escopo global. - Isso significa que, mesmo que
chute tenha sido declarada como local em verificarChute, a variável chute em limparCampo é tratada como global.
Problema com essa abordagem:
- Usar variáveis globais sem querer pode causar efeitos colaterais no seu código. Por exemplo, se outra função também usar uma variável chamada
chute, pode haver conflitos. - O ideal é sempre declarar variáveis com
let, const ou var para evitar esse tipo de situação.
Como corrigir?
Para evitar confusão e garantir que chute seja uma variável local em ambas as funções, você pode declarar chute dentro de limparCampo:
function limparCampo() {
let chute = document.querySelector('input');
chute.value = '';
}
Espero ter ajudado.
Se a resposta ajudou a resolver o problema, por favor, marcar o tópico como solucionado. Bons estudos!