🧠 JavaScript’te Karşılaştırma ve Mantıksal Operatörler

🧠 JavaScript’te Karşılaştırma ve Mantıksal Operatörler

(“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:

  1. Değer aynı mı?
  2. 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ı?

  • falsetrue yaptı
  • truefalse yaptı

📌 Ç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” 😌

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir