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:

javascriptlet 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:

javascriptlet 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:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // 2 yazacak
}

console.log(res); // 1 yazacak
Задание 1

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:

javascriptlet age = 17;
let adult;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);
Задание 2

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:

javascriptlet age = 17;
let adult;

if (age >= 18) {
  adult = true;
} else {
  let adult = false;
}

console.log(adult);
Задание 3

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:

javascriptlet 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);
Задание 4

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:

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