JavaScript-də Funksiyalarda Qlobal Dəyişənlər
JavaScript-də (digər dillərdə çox vaxt belə deyil) funksiyanın xaricində təyin edilmiş dəyişənlər həmin funksiyanın daxilində görünəcək. Belə dəyişənlərə qlobal dəyişənlər deyilir. Nümunəyə baxaq:
let num = 1; // funksiyanın xaricində dəyişən
function func() {
console.log(num); // num dəyişəni funksiya daxilində görünür
}
func(); // 1 çap edəcək
Əslində dəyişən funksiyanın təyinindən əvvəl deyil, onun çağırılmasından əvvəl müəyyən edilməlidir:
function func() {
console.log(num);
}
let num = 1; // funksiyanın xaricində dəyişən
func(); // 1 çap edəcək
Əgər dəyişənin qiymətini dəyişsəniz və bundan sonra
hər dəfə funksiyanı çağırsanız - console.log hər
dəfə fərqli nəticələr çap edəcək:
function func() {
console.log(num);
}
let num; // dəyişəni elan edək
num = 1; // qiyməti 1 təyin et
func(); // 1 çap edəcək
num = 2; // qiyməti 2 təyin et
func(); // 2 çap edəcək
Əgər bizim bir neçə funksiyamız varsa, onda qlobal dəyişən həmin funksiyaların hər birində əlçatan olacaq:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // 1 çap edəcək
func2(); // 1 çap edəcək
Əgər funksiyalardan birində qlobal dəyişənlə bağlı dəyişikliklər baş versə, onda həmin dəyişən bu dəyişəni istifadə edən bütün funksiyalarda dəyişəcək:
function func1() {
console.log(num);
num++; // qlobal dəyişəni dəyişirik
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // 1 çap edəcək
func2(); // 2 çap edəcək
Funksiyalardan hər hansı biri asanlıqla qlobal dəyişəni dəyişə bildiyi üçün, onların istifadəsi çətin tutulan səhvlər üçün yataq təşkil edir. Buna görə də skriptdə qlobal dəyişənlərin istifadəsini minimuma endirmək lazımdır. Arzu olunandır ki, onlar ümumiyyətlə olmasın və ya ən az sayda olsun.
Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:
let num = 1;
function func() {
console.log(num);
}
func();
Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();