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: LuizNeste 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ávioAqui, 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: LuizNeste 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.