Дастрасӣ ба тағйирёбандаҳои берунаи функсияҳо дар 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-ро мебарорад
Бори дигар: дар асл функсия қиматҳои тағйирёбандаҳои берунаро медонад, ҳатто вақте ки фарохонда нашудааст.