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.