JavaScript-də if-else şərtlərində dəyişənlərin görünmə sahəsi
Sadəlik üçün fərz edək ki, həmişə doğru olan bir şərtimiz var:
if (true) {
}
Gəlin aşağıdakı kodu nəzərdən keçirək:
if (true) {
let res = '!';
}
console.log(res);
Gördüyünüz kimi, res dəyişəninə
'!' qiyməti mənimsədilməlidir. Lakin,
bu kodu işlətsək, konsola xəta çıxacaq!
Məsələ ondadır ki, fiqurlu mötərizələr daxilində elan edilmiş dəyişənlər yalnız həmin mötərizələr daxilində görünür, xaricdə isə görünmür. Elmi cəhətdən desək, burada dəyişənlərin görünmə sahəsindən söhbət gedir.
Deyə bilərik ki, fiqurlu mötərizələr daxilində elan edilmiş dəyişənlərin görünmə sahəsi yalnız həmin fiqurlu mötərizələrdir. Lakin, əgər dəyişən fiqurlu mötərizələrin xaricində elan edilibsə, onda həm onların daxilində, həm də xaricində görünür:
let res; // dəyişən xaricdə elan edilib
if (true) {
res = '!';
}
console.log(res); // '!' çıxardacaq
Aşağıdakı nümunədə res dəyişəninə
şərtdən asılı olaraq ya
1, ya da 2 qiyməti mənimsədilir:
let num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Lakin, bu kodu işlətsək, konsola xəta çıxacaq. İndi başa düşdüyünüz kimi, bütün iş dəyişənlərin görünmə sahəsindədir. Problemi həll etmək üçün dəyişəni şərtin xaricində elan edək:
let test = true;
let res; // dəyişəni şərtin xaricində elan edək
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // 1 çıxardacaq
Aşağıdakı kodun müəllifi 18
yaşa çatıb-çatmama yoxlaması aparmaq istəyirdi.
Lakin, kod işləmir. Kod müəllifinin səhvini düzəldin.
Problemli kod belədir:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);