25%Off

Compre com desconto

Começou!

Começou!

00

DIAS

00

HORAS

00

MIN

00

SEG

Escopos no JavaScript

Escopos no JavaScript
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?

Banner da promoção da black friday, com os dizeres: A Black Friday Alura está chegando. Faça parte da Lista VIP, receba o maior desconto do ano em primeira mão e garanta bônus exclusivos. Quero ser VIP
if (algumaCoisa){ var i = 0; } alert(i); 

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

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