Досціп да знешніх зменных функцый у JavaScript
Давайце разгледзім наступны код:
let num = 1; // задаем значэнне зменнай
function func() {
console.log(num); // выводзім яго ў кансоль
}
func(); // выклікаем функцыю
Як я ўжо згадваў раней, значэнне зменнай не абавякова павінна быць перад вызначэннем функцыі, галоўнае, каб яно стаяла перад яе выклікам:
function func() {
console.log(num);
}
let num = 1;
func();
На самой справе гэта не зусім так. Нашая функцыя
нават да свайго выкліку ведае значэнне зменнай
num
:
let num = 1;
function func() {
console.log(num); // функцыя ўжо ведае, што num = 1
}
Вось больш складаны прыклад:
let num = 1; // функцыя ў гэты момант даведваецца, што num = 1
function func() {
console.log(num);
}
num = 2; // функцыя ў гэты момант даведваецца, што num = 2
Дадаем выклікі функцыі:
let num = 1; // функцыя ў гэты момант даведваецца, што num = 1
func(); // выведе 1
function func() {
console.log(num);
}
func(); // выведе 1
num = 2; // функцыя ў гэты момант даведваецца, што num = 2
func(); // выведе 2
Яшчэ раз: на самой справе функцыя ведае значэння знешніх зменных, нават не будучы выкліканай.