JavaScript'te if-else Yapılarında Değişken Kapsamının Nüansları
Değişken kapsamının bazı nüansları vardır.
Hadi bunu bir örnekle inceleyelim.
Koşulumuzun dışında, bir değere sahip res
değişkenini tanımlayalım ve koşulun içinde
bu değeri başka bir değerle değiştirelim:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // 2 yazacak
Gördüğünüz gibi, res değişkeni
koşulun içinde değişti. Ancak, koşulun içinde
res değişkenini let ile
tekrar tanımlarsak her şey değişir:
let res = 1;
if (true) {
let res = 2; // değişkeni let ile tanımlayalım
}
console.log(res); // 2 değil, 1 yazacak!
Buradaki mesele, koşulun içinde let
ile değişken tanımlamanın yerel bir res
değişkeni oluşturmasıdır.
Yani koşulun içinde bir tane res
değişkeni varken, koşulun dışında başka bir
tane vardır. Bunu, değişkenin değerini koşulun
içinde konsola yazdırarak görebiliriz:
let res = 1;
if (true) {
let res = 2;
console.log(res); // 2 yazacak
}
console.log(res); // 1 yazacak
Aşağıdaki kodun yazarı, yaşın 18'e
ulaşıp ulaşmadığını kontrol etmek istedi.
Ancak kod, yaş ne olursa olsun konsola
undefined değerini yazdırıyor.
Kod yazarının hatasını düzeltin. İşte sorunlu kod:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Aşağıdaki kodun yazarı, yaşın 18'e
ulaşıp ulaşmadığını kontrol etmek istedi.
Kod kontrol edildikten sonra, yaş 18
veya daha büyükse, adult değişkenine
olması gerektiği gibi true yazıldığı, ancak
yaş 18'den küçükse, adult
değişkeninin undefined değerine sahip
olduğu anlaşıldı. Kod yazarının hatasını düzeltin.
İşte sorunlu kod:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Aşağıdaki kodun yazarı, yaş kontrolü yapmak
istedi. Ancak kod, yaş ne olursa olsun
konsola undefined değerini yazdırıyor.
Kod yazarının hatasını düzeltin.
İşte sorunlu kod:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = '18 ile 23 arası';
} else {
let res = '23\'ten büyük';
}
} else {
let res = '18\'den küçük';
}
console.log(res);
Aşağıdaki kodun yazarı, yaş kontrolü yapmak
istedi. Ancak kod, yaş 18'den büyük
olduğunda konsola undefined değerini
yazdırıyor. Kod yazarının hatasını düzeltin.
İşte sorunlu kod:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = '18 ile 23 arası';
} else {
res = '23\'ten büyük';
}
} else {
res = '18\'den küçük';
}
console.log(res);