Quando se está começando no mundo da programação as dúvidas são bem frequentes. E uma que sempre estava comigo, era em relação ao escopo global e local em um programa. Sendo assim, escrevi este artigo para ajudar você a entender melhor esses dois cenários no universo da programação. Vamos lá?
Escopo Global x Local
Global
Como podemos ver na imagem acima, o escopo Global é o espaço que está fora de qualquer classe, função ou namespace. Todas as variáveis declaradas neste espaço podem ser acessadas a qualquer momento e em qualquer lugar do seu código.
Acessando variáveis no escopo global
Perceba que mesmo sem passar nada como parâmetro para a função showName, ela consegue acessar a variável nome, pois essa foi declarada no escopo global.
Local
Agora o escopo local é mais restrito, as variáveis que são declaradas dentro desse escopo são acessadas somente dentro escopo local.
Por exemplo, se eu estiver no escopo global, e tentar acessar uma variável que está dentro de uma função, vai ser gerado um erro dizendo que a variável não existe.
E por mais que eu tenha declarado a variável nomeLocal ela não existe no escopo que eu estou chamando ela.
Desafio
Agora se a gente executar esse código da seguinte forma:
Sabendo que, as funções tem acesso total as variáveis que estão declaradas no escopo global, qual será o nome impresso no console?
Não sei se você acertou, mas vamos entender o que aconteceu. Logo após a função ser chamada, ela vai procurar pela variável nome, e ela diz “Olha eu encontrei essa variável aqui que condiz com a que você quer mostrar”. Então ela para de procurar, e mostra o valor da variável no console.
Do contrário, se não tivéssemos essa variável nome dentro da função, ela sairia procurando no escopo acima dela, ou seja, o escopo global.
Analogia
Uma analogia que faz bastante sentido para mim, é comparar os escopos com caixas, sabe? Onde o escopo global é a caixa maior e o escopo local é a caixa menor. E, a medida que você vai criando funções dentro de funções, por exemplo, você vai colocando uma caixa dentro da outra.
Porém, a caixa maior nunca terá acesso as coisas que têm dentro da caixa menor, pois é como se as caixas menores estivessem fechadas.
Conclusão
Neste artigo vimos as diferenças entre o escopo global e local. Além disso, vimos como as funções buscam as variáveis do seu código. Elas começam procurando no seu próprio escopo, e se não acharem, vão subindo e tentando encontrar no escopo acima delas.
E se você quiser saber mais sobre escopo em JavaScript, é só clicar no link abaixo. Bons estudos!