Bir programın akıllı görünmesini sağlayan şey, elindeki verilere bakarak farklı yollar seçebilmesidir. JavaScript'te if-else yapıları, kodun akışını kontrol eden trafik polisleri gibidir. Softyla Layer 2 seviyesinde, bu yapıları sadece "çalıştırmak" için değil, en doğru karar ağacını kurmak için öğreneceğiz.
Koşullu Mantık: true ve false Arasındaki Seçim
if-else yapıları, programın akışını koşullara göre yönlendiren karar mekanizmalarıdır. Her if bloğu, parantez içindeki ifadenin Boolean (true veya false) bir değer üretmesini bekler ve bu sonuca göre farklı kod bloklarını çalıştırır.
Layer 2 Bakışı: Parantez içine sadece a == b gibi kıyaslamalar yazmak zorunda değilsiniz.
JavaScript, bazı değerleri otomatik olarak "doğru" (Truthy) veya "yanlış" (Falsy) kabul eder.
Şimdilik bilmemiz gereken; Sayısal olarak 0, boş bir metin "", null ve undefined değerlerinin if sorgusunda
otomatik olarak false gibi davranacağıdır. Bu bilgi, ByteOmi seviyesinde kod yazarken sizi uzun
kontrollerden kurtaracaktır.
Zincirleme Kararlar: else if ve else
Hayat her zaman sadece iki seçenekten (Evet/Hayır) ibaret değildir. Birden fazla ihtimali değerlendirirken else if basamaklarını kullanırız.
- if: İlk düğmedir, kontrolü başlatır.
- else if: İlk düğme kapalıysa, "peki ya bu doğru mu?" diye sorar.
- else: Yukarıdaki hiçbir şart uymadığında çalışan "son çare" bloğudur.
Mantıksal Operatörlerle Koşulları Güçlendirme
Karar yapılarını çok daha akıllı hale getirmek için operatörlerden yardım alırız.
- VE (&&): "Hem bakiye yeterli olsun hem de ürün stokta olsun." (İki şart da sağlanmalı).
- VEYA (||): "İndirim kuponu olsun veya kampanya dönemi olsun." (Biri yeterli).
ByteOmi perspektifinde bu birleşimler, karmaşık iş mantıklarını (business logic) temiz bir şekilde çözmemizi sağlar.
İç İçe (Nested) Yapılar ve Okunabilirlik
Bir if bloğunun içine başka bir if yazabilirsiniz. Ancak Layer 2 seviyesindeki bir yazılımcı olarak dikkat etmeniz gereken bir kural vardır: Derinlik arttıkça kodun okunabilirliği azalır.
Layer 2 İpucu: Eğer çok fazla iç içe if kullanmaya başladıysanız, ByteOmi'de göreceğimiz "Early Return" (Erken Dönüş) veya "Switch Case" gibi yapıları düşünmenin vakti gelmiş demektir. Temiz kod, az düğüm demektir.
Kısa Yol Kararları: Ternary ve Kısa Devre
Bazı durumlarda koca bir if-else bloğu yazmak yerine daha profesyonel yöntemler kullanırız:
-
Ternary:
puan > 50 ? "Geçti" : "Kaldı"(Tek satırda karar). -
Short-circuit:
kullanici && kullanici.selamla()(Eğer kullanıcı varsa selamla).
Bu kısa yollar, ByteOmi standartlarında "modern ve şık" kod yazmanın anahtarıdır.
Karar Yapılarında Performans
Tarayıcı, if-else zincirinde bir eşleşme bulduğunda diğerlerine bakmayı bırakır.
Mühendislik Notu: En çok gerçekleşme ihtimali olan koşulu en başa (ilk if bloğuna) koymak, işlemcinin boşuna alt basamakları kontrol etmesini engeller. Bu, büyük ölçekli uygulamalarda ByteOmi seviyesinde bir optimizasyon tekniğidir.
ByteOmi Geçiş Paneli: Sırada Ne Var?
Karar yapılarımızla kodun yolunu belirledik. Peki, eğer kontrol etmemiz gereken seçenek sayısı 10-15 taneyse? Sürekli else if yazmak kodumuzu bir spagettiye çevirebilir. Bir sonraki adımda, çok seçenekli durumları daha düzenli yönetmemizi sağlayan "Switch Case" yapısına geçiyoruz. Orada "katı eşitlik" kontrolünün neden bu kadar önemli olduğunu mühendislik gözüyle inceleyeceğiz.
// 1. Kullanıcıdan Gelen Veriler (Simüle Ediliyor)
const enteredPassword = "12345";
const storedPassword = "12345";
const isAccountActive = true;
const userRole = "editor"; // admin, editor, guest
// 2. İç İçe If-Else (Nested Conditions): Hiyerarşik Kontrol
if (enteredPassword === storedPassword) {
if (isAccountActive) {
console.log("Giriş Başarılı! Yetki kontrolleri yapılıyor...");
// 3. Switch-Case Kullanımı: Belirli seçenekler (roller) için en ideal yapı
switch (userRole) {
case "admin":
console.log("Tam yetki sağlandı. Tüm panellere erişebilirsiniz.");
break;
case "editor":
console.log("İçerik düzenleme yetkisi sağlandı.");
break;
case "guest":
console.log("Sadece görüntüleme yetkisi sağlandı.");
break;
default:
console.log("Tanımsız rol! Lütfen sistem yöneticisine başvurun.");
}
} else {
console.warn("Hesabınız askıya alınmış. Lütfen destekle iletişime geçin.");
}
} else {
console.error("Hatalı şifre! Lütfen tekrar deneyin.");
}
// 4. Layer 2 Pratiği: Koşulsuz Çıkış (Guard Clauses) Mantığına Hazırlık
// ByteOmi'de bu iç içe yapılar yerine "erken hata döndürme" yöntemini öğreneceksiniz.