JavaScript'te if-else Değişken Kapsamı
Basitlik için, her zaman çalışan bir koşulumuz olsun:
javascriptif (true) {
}
Şu kodu inceleyelim:
javascriptif (true) {
let res = '!';
}
console.log(res);
Gördüğünüz gibi, res değişkenine
'!' değeri atanmalı. Ancak,
bu kodu çalıştırırsanız, konsola bir
hata yazdırılacak!
Sebebi şudur: süslü parantezlerin içinde tanımlanan değişkenler, sadece bu parantezlerin içinde görülebilir, dışarıda görülemez. Bilimsel olarak konuşursak, burada değişken kapsamı söz konusudur.
Süslü parantezlerin içinde tanımlanan değişkenlerin kapsamının sadece bu süslü parantezler olduğu söylenebilir. Ancak, eğer bir değişken süslü parantezlerin dışında tanımlanmışsa, hem onların içinde hem de dışında görülebilir:
javascriptlet res; // değişken dışarıda tanımlandı
if (true) {
res = '!';
}
console.log(res); // '!' yazdıracak
Aşağıdaki örnekte, res değişkenine
koşula bağlı olarak ya
1 değeri, ya da 2 değeri yazılır:
javascriptlet num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
Ancak, bu kodu çalıştırırsanız, konsola bir hata yazdırılacak. Artık anladığınız gibi, sebep değişkenlerin görünürlüğüdür. Sorunu çözmek için değişkeni koşulun dışında tanımlayalım:
javascriptlet test = true;
let res; // değişkeni koşulun dışında tanımla
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // 1 yazdıracak
Aşağıdaki kodun yazarı, yaşın 18
yaşına ulaşıp ulaşmadığını kontrol etmek istedi.
Ancak, kod çalışmıyor. Kod yazarının hatasını düzeltin.
İşte sorunlu kod:
javascriptlet age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);