JavaScript-də Funksiyaların Xarici Dəyişənlərə Girişi

Gəlin aşağıdakı kodu nəzərdən keçirək:

javascriptlet num = 1; // dəyişənə qiymət təyin edirik

function func() {
  console.log(num); // onu konsola çıxarırıq
}

func(); // funksiyanı çağırırıq

Daha əvvəl qeyd etdiyim kimi, dəyişənin qiyməti mütləq funksiyanın təyinindən əvvəl olmalı deyil, əsas olan, onun funksiyanın çağırılmasından əvvəl müəyyən edilməsidir:

javascriptfunction func() {
  console.log(num);
}

let num = 1;
func();

Əslində bu, tam olaraq belə deyil. Bizim funksiyamız öz çağırılmasından əvvəl belə dəyişənin qiymətini bilir num:

javascriptlet num = 1;

function func() {
  console.log(num); // funksiya artıq bilir ki, num = 1
}

Budur daha mürəkkəb bir nümunə:

javascriptlet num = 1; // funksiya bu anda öyrənir ki, num = 1

function func() {
  console.log(num);
}

num = 2; // funksiya bu anda öyrənir ki, num = 2

Gəlin funksiya çağırışları əlavə edək:

javascriptlet num = 1; // funksiya bu anda öyrənir ki, num = 1
func(); // 1 çıxardacaq

function func() {
  console.log(num);
}

func(); // 1 çıxardacaq
num = 2; // funksiya bu anda öyrənir ki, num = 2
func(); // 2 çıxardacaq

Bir daha: əslində funksiya xarici dəyişənlərin qiymətlərini, hətta çağırılmayanda belə bilir.