Tüm blog yazıları

JavaScript’te İç İçe Koşullu İfadeler (Nesting Conditionals)

Programlama dünyasında karar vermek, en sık karşılaşılan işlemlerden biridir. Uygulamalar, kullanıcının girişine göre ya da sistemden gelen değerlere göre farklı yollar izleyebilir. Bu tür durumları kontrol etmek için koşullu ifadeler kullanırız. JavaScript’t

eminbasbayan4 dk okuma
JavaScript’te İç İçe Koşullu İfadeler (Nesting Conditionals)

Programlama dünyasında karar vermek, en sık karşılaşılan işlemlerden biridir. Uygulamalar, kullanıcının girişine göre ya da sistemden gelen değerlere göre farklı yollar izleyebilir. Bu tür durumları kontrol etmek için koşullu ifadeler kullanırız. JavaScript’te bunun temel yolu if, else if ve else ifadeleridir.

Ancak bazen, bir şart gerçekleşmeden diğer şartlara bakmak istemeyiz. İşte burada devreye iç içe koşullu ifadeler, yani nesting conditionals girer. Bu makalede nesting yapısının ne olduğunu, neden ve nasıl kullanıldığını detaylıca inceleyeceğiz.

1. Temel Koşullu Yapılar

Önce koşullu ifadelerin basit halini hatırlayalım:

jsx
let age = 17;

if (age >= 18) {
  console.log("Ehliyet alabilirsiniz.");
} else {
  console.log("Yaşınız tutmuyor.");
}

Burada tek bir koşul kontrol ediliyor. Ama bazen birden fazla koşulu kontrol etmek gerekir. Ve bu koşullar birbirine bağlı olabilir. Örneğin, ikinci bir kontrolü ancak ilk şart sağlanıyorsa yapmak isteyebiliriz. Bu durumda iç içe yapılar devreye girer.

2. İç İçe Koşullu İfade Nedir?

İç içe koşullu ifade, bir if bloğunun içinde başka bir if bloğunun olmasıdır. Bu, kodun sadece belirli bir durumda çalışmasını sağlar.

Gerçek Hayattan Analojisi:

Bir müzeye giriş yapmak için önce biletin olması gerekir. Ama sadece bilet yeterli değildir; yanında kimlik de göstermen gerekebilir. Ancak bu kimlik kontrolü sadece biletin varsa yapılır. İşte bu mantık, iç içe koşullu ifadenin temelidir.

3. Örnek: Öğrenci Not Değerlendirme Sistemi

Diyelim ki bir öğrencinin notunu kontrol eden bir sistem yapıyoruz. Önce notun geçerli bir sayı olup olmadığına bakacağız. Eğer geçerliyse, ardından bu nota göre bir harf notu vereceğiz.

jsx
const score = parseInt(prompt("Notunuzu girin (0-100 arasında):"));

if (score >= 0 && score <= 100) {
  if (score >= 90) {
    console.log("Notunuz: A");
  } else if (score >= 80) {
    console.log("Notunuz: B");
  } else if (score >= 70) {
    console.log("Notunuz: C");
  } else if (score >= 60) {
    console.log("Notunuz: D");
  } else {
    console.log("Notunuz: F");
  }
} else {
  console.log("Geçersiz not girdiniz. Lütfen 0-100 arasında bir değer girin.");
}

Burada şu yapı var:

  • Birinci if: Not geçerli mi?
  • İkinci if bloğu (içerideki): Geçerliyse harf notunu belirle.

Bu yapı sayesinde hatalı not girilirse sistem boşuna harf hesaplamaz. Böylece gereksiz kontroller engellenir.

4. Neden Nested If Kullanmalıyız?

Bazı durumlarda && (mantıksal VE) operatörüyle birden fazla şartı tek satırda kontrol etmek mümkün olsa da, kodun okunabilirliği ve mantıksal akışı açısından nested yapı daha açıklayıcı olabilir.

Örnek Karşılaştırma:

jsx
// Tüm şartlar tek satırda
if (isMember && hasTicket && age >= 18) {
  console.log("Etkinliğe katılabilirsiniz.");
}

Bu örnek kısa ama neyin neden kontrol edildiğini anlamak zor olabilir. Nested yapı kullanırsak:

jsx
if (isMember) {
  if (hasTicket) {
    if (age >= 18) {
      console.log("Etkinliğe katılabilirsiniz.");
    } else {
      console.log("Yaş sınırını karşılamıyorsunuz.");
    }
  } else {
    console.log("Etkinlik bileti yok.");
  }
} else {
  console.log("Üye değilsiniz.");
}

Bu daha uzun ama kontrol sırasını ve mantığı daha açık gösterir.

5. Dikkat Edilmesi Gereken Noktalar

İç içe koşullar kullanılırken bazı şeylere dikkat etmek gerekir:

  • Gereksiz derinlikten kaçının: Çok fazla iç içe yapı, kodun okunmasını zorlaştırır.
  • Gerekiyorsa return veya break kullanarak erken çıkış yapın.
  • Koşulların sırasını iyi belirleyin: En genel durumla başlamayın, özel ve filtreleyici durumlarla başlayın.

6. Alternatif Yöntem: Koşulları Birleştirmek

Eğer şartlar birbirinden bağımsız değilse ama sadeleştirilebiliyorsa, mantıksal operatörlerle tek satıra da indirgenebilir:

jsx
if (score >= 0 && score <= 100 && score >= 90) {
  console.log("Notunuz: A");
}

Ama bu her zaman önerilmez. Nesting sayesinde kod akışı daha adım adım olur, özellikle yeni başlayanlar için daha anlaşılır hale gelir.

7. Uygulama: Ürün İade Sistemi

Bir mağazada ürün iadesi yapılabilmesi için şu şartlar olsun:

  • Fatura var mı?
  • İade süresi 30 günü geçmemiş mi?
  • Ürün zarar görmemiş mi?
jsx
const hasReceipt = true;
const daysSincePurchase = 15;
const productDamaged = false;

if (hasReceipt) {
  if (daysSincePurchase <= 30) {
    if (!productDamaged) {
      console.log("İade işlemi başarıyla tamamlandı.");
    } else {
      console.log("Zarar görmüş ürün iade alınamaz.");
    }
  } else {
    console.log("İade süresi geçmiş.");
  }
} else {
  console.log("Fatura olmadan iade yapılamaz.");
}

Bu örnekte, her kontrol sadece bir önceki şart doğruysa yapılır. Bu, gerçek hayattaki işleyişe çok benzer.

Sonuç

İç içe koşullu ifadeler, programlamada daha kontrollü ve anlamlı kararlar vermek için güçlü bir yöntemdir. Özellikle bazı şartlar yalnızca başka şartlar sağlandığında kontrol edilmeliyse, nested yapı sayesinde:

  • Gereksiz işlem yapmaktan kaçınılır,
  • Kod daha okunabilir hale gelir,
  • Hatalar daha kolay önlenir.

Yeni başlayan biri için nesting yapısı ilk başta karmaşık görünebilir. Ancak bu yapının mantığını kavradıktan sonra, karmaşık mantıksal durumları çok daha kolay bir şekilde kodlayabilirsiniz. Nesting conditionals, ileride öğreneceğiniz daha gelişmiş yapılar için sağlam bir temel oluşturur.

JavaScript Classes ile pratik uygulamalar, metotlar arası iletişim ve gerçek dünya kod örnekleri
JavaScript Dersleri9 dk okuma

JavaScript Classes - Pratik Uygulamalar

JavaScript class'ları ile pratik uygulamalara geçin! Metotlar arası iletişimden constructor'da metot çağırmaya, kod tekrarını azaltmaktan gerçek dünya senaryolarına kadar class kullanımının inceliklerini keşfedin. Kendi alışveriş sepeti örneğinizle bilginizi pekiştirin.

Yazıyı oku
JavaScript class yapısını gösteren bir kod örneği, ES6 ile modern nesne oluşturma
JavaScript Dersleri9 dk okuma

JavaScript Classes

ES6 ile JavaScript'e gelen class yapısı sayesinde nesne oluşturmak artık çok daha kolay ve düzenli! Constructor function karmaşasından kurtulup, okunabilir ve yönetilebilir kodlar yazmak isteyenler için modern JavaScript'in temel taşı olan class'ları tüm detaylarıyla keşfedin. Bu rehberle nesne şabl

Yazıyı oku
JavaScript kodunda Constructor Function ve new keyword'ü ile nesne oluşturma örnekleri
JavaScript Dersleri8 dk okuma

Constructor Functions ve new Keyword

Factory Function'ların hafıza israfı sorununa Constructor Function'lar ve new keyword'ü ile son verin! Metotları paylaştırarak JavaScript objelerini daha verimli nasıl oluşturacağınızı, new'in perde arkasında neler yaptığını ve prototype sisteminin gücünü bu rehberde keşfedin.

Yazıyı oku

Çerez tercihlerin

Platformun çalışması için zorunlu çerezler kullanıyoruz. İzin verirsen anonim kullanım verilerini ölçüyoruz. Ayrıntıları incele