Dəyişənlərin görünmə sahəsinin if-else quruluşlarında incəlikləri JavaScript-də
Dəyişənlərin görünmə sahəsinin bəzi
incəlikləri var. Gəlin bunu bir nümunə ilə
nəzərdən keçirək. Gəlin şərtimizin xaricində bir dəyişən
elan edək res bir dəyərlə, və daxildə
isə bu dəyəri digəri ilə dəyişək:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // 2 çap edəcək
Gördüyünüz kimi, res dəyişəni
şərtin daxilində dəyişdi. Lakin, hər şey dəyişəcək,
əgər şərtin daxilində dəyişən
res let ilə elan edilərsə:
let res = 1;
if (true) {
let res = 2; // dəyişəni let ilə elan edək
}
console.log(res); // 2 yox, 1 çap edəcək!
Burada bütün iş ondadır ki, şərtin daxilində
let ilə dəyişənin elan edilməsi lokal
res dəyişəni yaradır.
Yəni şərtin daxilində bir res dəyişəni
var, şərtin xaricində isə - başqa bir dəyişən.
Buna əmin olmaq üçün dəyişənin dəyərini
şərtin daxilində konsola çıxarda bilərik:
let res = 1;
if (true) {
let res = 2;
console.log(res); // 2 çap edəcək
}
console.log(res); // 1 çap edəcək
Aşağıdakı kodun müəllifi 18 yaşa
çatıb-çatmadığını yoxlamaq istəyirdi.
Lakin, kod istənilən yaş dəyərində
konsola undefined dəyərini çap edir.
Kod müəllifinin səhvini düzəldin. Problemli kod budur:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Aşağıdakı kodun müəllifi 18 yaşa
çatıb-çatmadığını yoxlamaq istəyirdi.
Kodun yoxlanılmasından sonra məlum oldu ki, əgər
yaş 18 və ya daha böyükdürsə, onda
adult dəyişəninə true yazılır,
olduğu kimi, lakin, əgər yaş 18-dən kiçikdirsə,
onda adult dəyişəni
undefined dəyərinə malikdir. Kod müəllifinin səhvini düzəldin.
Problemli kod budur:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Aşağıdakı kodun müəllifi yaş yoxlaması
yerinə yetirmək istəyirdi. Lakin, kod istənilən
yaş dəyərində konsola undefined
dəyərini çap edir. Kod müəllifinin səhvini düzəldin.
Problemli kod budur:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = '18-dən 23-ə qədər';
} else {
let res = '23-dən böyük';
}
} else {
let res = '18-dən kiçik';
}
console.log(res);
Aşağıdakı kodun müəllifi yaş yoxlaması
yerinə yetirmək istəyirdi. Lakin, kod
yaş 18-dən böyük olduqda
konsola undefined dəyərini çap edir.
Kod müəllifinin səhvini düzəldin.
Problemli kod budur:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = '18-dən 23-ə qədər';
} else {
res = '23-dən böyük';
}
} else {
res = '18-dən kiçik';
}
console.log(res);