(“Bu if çalışıyordu dün…” diyenlerin rehabilitasyon merkezi)
JavaScript’te kod yazmak bazen şuna benzer:
“Ben bunu açık açık söyledim,
ama JavaScript başka bir şey anladı.”
Sebep mi?
Karşılaştırma ve mantık kuralları.
JavaScript aptal değildir, sadece fazla serbesttir.
Hadi bu serbestliği avantaja çevirelim.
🔍 1. Karşılaştırma Operatörleri
“Aynı mıyız, benzer miyiz, yoksa sadece tesadüf mü?”
🟡 == (Gevşek Eşitlik – “Tipi boşver” modu)
5 == "5" // true
true == 1 // true
false == 0 // true
Ne oluyor burada?
JavaScript diyor ki:
“Bir dakika… ben bunları aynı tipe çevirip bakayım.”
Yani:
"5"→ number’a çevriliyor- sonra karşılaştırılıyor
❌ Sorun nerede?
Bu davranış öngörülemez bug’lar üretir.
📌 Kural:
==seni kandırmaz ama fazla hoşgörülüdür.
🟢 === (Sıkı Eşitlik – “Ciddi ilişki”)
5 === "5" // false
5 === 5 // true
Burada JS şunu sorar:
- Değer aynı mı?
- Tip aynı mı?
İkisi de evet değilse → false
📌 Profesyonel refleks:
===yaz, arkana yaslan.
🔴 != ve !== (Eşit Değil mi?)
5 != "5" // false
5 !== "5" // true
!=→ “Benzemiyor muyuz?”!==→ “Aynı kişi değil miyiz?”
🎯 Gerçek hayatta:!== kullan, drama yaşama.
📏 Büyük – Küçük Karşılaştırmaları
10 > 5 // true
4 < 2 // false
8 >= 8 // true
Ama…
"10" > 2 // true 😐
Neden?
JavaScript:
"10"→ number’a çeviriyor- sonra kıyaslıyor
📌 İpucu:
Karşılaştırma yapmadan önce tipleri sen kontrol et, JS’e bırakma.
🧠 2. Mantıksal Operatörler
“Birden fazla şart varsa işler ciddileşir”
🔗 && (VE)
“Hepsi doğruysa konuşuruz”
let yas = 22;
let ehliyet = true;
if (yas >= 18 && ehliyet) {
console.log("Araba kullanabilirsin 🚗");
}
Mantık:
- Sol taraf doğru mu?
- Sağ taraf doğru mu?
- İkisi de evet mi?
📌 Kural:
Bir tanesi bile false ise → sonuç false
⚡ Short-circuit detayı:
false && console.log("çalışmaz");
Sağ taraf hiç çalışmaz.
JavaScript diyor ki:
“Zaten false, niye devam edeyim?”
🔀 || (VEYA)
“Bir tanesi yeter, fazla zorlamayalım”
let admin = false;
let editor = true;
if (admin || editor) {
console.log("Erişim verildi 🔓");
}
Mantık:
- Soldaki doğruysa → biter
- Değilse sağa bakar
📌 Altın ipucu (çok kullanılır):
let isim = userName || "Misafir";
Eğer userName:
- boşsa →
"Misafir" - doluysa → kendisi
🔄 ! (DEĞİL)
“Ters psikoloji operatörü”
let isLoggedIn = false;
if (!isLoggedIn) {
console.log("Giriş yapman lazım 🔐");
}
Ne yaptı?
false→trueyaptıtrue→falseyaptı
📌 Çift ünlem efsanesi:
!!"merhaba" // true
!!0 // false
👉 Değeri boolean’a çevirmenin kısa yolu
⚠️ 3. Truthy & Falsy
“JavaScript’te herkes doğruyu söylemez”
❌ Falsy değerler:
false
0
""
null
undefined
NaN
Bunlar if içinde false kabul edilir.
✅ Geri kalan HER ŞEY truthy:
"0" // true
[] // true
{} // true
"false" // true (ironi burada başlar)
📌 Yeni başlayanların düştüğü çukur:
if (age) {
// age = 0 ise burası çalışmaz
}
✅ Güvenli yol:
if (age !== undefined && age !== null) {
}
🧪 4. Gerçek Hayat Senaryoları
🛒 Sepet Kontrolü
if (cart.length > 0 && userLoggedIn) {
checkout();
}
🧠 Açıklama:
- Sepet boş mu?
- Kullanıcı giriş yapmış mı?
- İkisi de evetse ödeme başlar
🔐 Rol Kontrolü
if (role === "admin" || role === "moderator") {
paneliAc();
}
Bir tanesi yeter → erişim verilir
🧯 5. En Yaygın Hatalar (Ve Kurtulma Yolları)
❌ == kullanmak
❌ Tip dönüşümünü JS’e bırakmak
❌ Truthy / falsy’yi bilmeden if yazmak
❌ 0, "", null farkını karıştırmak
✅ === kullan
✅ Açık açık kontrol et
✅ Kodu sen yönet, JavaScript değil
🧠 Final Öğreti (Altın Değerinde)
**JavaScript’te if yazmak,
sadece koşul yazmak değildir.JavaScript’e “ne demek istediğini” net anlatmaktır.**
Ne kadar net olursan:
- o kadar az bug
- o kadar az “neden çalışmadı?”
- o kadar çok “oha bu temiz kod” 😌

