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.