Escopo léxico


O escopo léxico, também conhecido como escopo estático, refere-se à capacidade de uma função em JavaScript acessar variáveis de seu próprio escopo, do escopo de outras funções e do escopo global no momento de sua declaração. Isso significa que uma função “conhece” os contextos nos quais foi definida e pode acessar variáveis desses contextos, mesmo se for chamada em um escopo diferente.

Exemplos

Exemplo 1

const nome = "Luiz";
 
function falaNome() {
  console.log(nome);
}
 
function usarFalaNome() {
  falaNome();
}
 
usarFalaNome(); // Saída: Luiz

Neste exemplo, a função falaNome é capaz de acessar a variável nome definida no escopo global, mesmo sendo chamada de dentro de outra função (usarFalaNome).

Exemplo 2

const nome = "Luiz";
 
function falaNome() {
  const nome = "Otávio";
  console.log(nome);
}
 
function usarFalaNome() {
  falaNome();
}
 
usarFalaNome(); // Saída: Otávio

Aqui, a função falaNome tem sua própria variável nome, que está no escopo local da função. Quando chamada dentro da função usarFalaNome, ela exibe o valor da variável nome de seu próprio escopo.

Exemplo 3

const nome = "Luiz";
 
function falaNome() {
  console.log(nome);
}
 
function usarFalaNome() {
  const nome = "Otávio";
  falaNome();
}
 
usarFalaNome(); // Saída: Luiz

Neste exemplo, mesmo que a função usarFalaNome tenha uma variável nome em seu escopo, ao chamar falaNome, ela acessa a variável nome do escopo global, devido ao escopo léxico.

Referências