Escopos no JavaScript

Alura
Sérgio Lopes
Sérgio Lopes

Compartilhe

Todo mundo sabe que uma variável local é... local:

function(){ var i = 0; } alert(i); // não funciona

Mas e isso?

if (algumaCoisa){ var i = 0; } alert(i); 

Uma variável declarada dentro do if é visível fora dele? Sim!

Banner promocional da Alura, com um design futurista em tons de azul, apresentando o texto "Já sabe quais os próximos passos para seus estudos em Front-end? O Guia de Carreira em Front-end vai te ajudar nisso". À direita, está a foto de um jovem sorridente olhando para a esquerda do banner, ao lado de uma lista de tópicos oferecidos pelo guia, como "Principais cursos e formações da Alura nessa área", "Caminhos para carreira Front-end Angular e React", "Como migrar do Front-end para Back-end" e "Dicas de especialistas na área". No canto inferior direito, há um ícone de download e o texto "Baixe gratuitamente".

JavaScript só tem escopo de função (e o escopo global). Não temos escopo de bloco. Ou seja, o if não define um escopo isolado.

Cuidado pra isso não te atrapalhar em alguns cenários. Por exemplo, dois fors simples:

for (var i = 0; i < 10; i++) { ... } 
for (var i = 10; i > 0; i--) { ... } 

Ambos estão mexendo na mesma variável i, afinal o for também não define um escopo. Temos que tomar cuidado pra não fazer alguma besteira.

O novo ES6 define, FINALMENTE, escopo de bloco na linguagem. É com a palavra chave let:

if (algumaCoisa){ let i = 0; } alert(i);

Bom saber, mas o suporte ainda é fraco nos navegadores.


Quer fugir de outras enrascadas JavaScript e facilitar o seu dia a dia no front-end? Receba 10 dicas e boas práticas do expert Sérgio Lopes, uma por dia:

Cadastre-se na série Boas práticas de JavaScript

Sérgio Lopes
Sérgio Lopes

Sérgio é diretor e líder do time de diversos times no Grupo Caelum, formado em Ciência da Computação pela USP. É reconhecido por sua atuação em Front-end, Performance, Mobile e Arquitetura de software e tem vasta experiência com ensino, tanto presencial quanto online. Gerencia os projetos internos da empresa e atua na definição de rumos dos produtos e da empresa em geral.

Veja outros artigos sobre Front-end