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
Задание 1

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);