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

Escopo global e 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

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.

Escopo local

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:

Como sairá no console? Escopo local

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?

Desafio

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.

analogia

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!