Acesso a variáveis externas em funções JavaScript
Vamos considerar o seguinte código:
let num = 1; // define o valor da variável
function func() {
console.log(num); // exibe no console
}
func(); // chama a função
Como mencionei anteriormente, o valor da variável não precisa necessariamente estar antes da definição da função, o importante é que esteja antes de sua chamada:
function func() {
console.log(num);
}
let num = 1;
func();
Na realidade, isso não é bem assim. Nossa função
sabe o valor da variável num mesmo antes de ser chamada:
let num = 1;
function func() {
console.log(num); // a função já sabe que num = 1
}
Aqui está um exemplo mais complexo:
let num = 1; // neste momento a função descobre que num = 1
function func() {
console.log(num);
}
num = 2; // neste momento a função descobre que num = 2
Vamos adicionar chamadas de função:
let num = 1; // neste momento a função descobre que num = 1
func(); // exibirá 1
function func() {
console.log(num);
}
func(); // exibirá 1
num = 2; // neste momento a função descobre que num = 2
func(); // exibirá 2
Repetindo: na verdade, a função sabe os valores das variáveis externas, mesmo sem ter sido chamada.