JavaScript'te if-else Değişken Kapsamı
Basitlik için, her zaman çalışan bir koşulumuz olsun:
if (true) {
}
Şu kodu inceleyelim:
if (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:
let 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:
let 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:
let 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:
let age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);