🎭 Truthy & Falsy: JavaScript’te Her Şey Göründüğü Gibi Değil

🎭 Truthy & Falsy: JavaScript’te Her Şey Göründüğü Gibi Değil

JavaScript bazen sana göz kırpar ve der ki:
“Bu teknik olarak false değil ama ben yine de bir düşüneyim…” 🤨

İşte bu yazı, JavaScript’in true / false konusundaki psikolojisini anlaman için yazıldı.

Bu içerikte:

  • Truthy & Falsy mantığını temelden zirveye çıkıyoruz
  • Her başlıkta bol bol kod görüyoruz
  • Kodları satır satır, insan diliyle açıklıyoruz
  • Gerçek hayatta bug çıkaran tuzakları tek tek temizliyoruz 🧹

Hazırsan başlıyoruz… kahveni al ☕🚀


🧠 Truthy & Falsy Nedir? (Gerçekten İnsan Diliyle)

JavaScript’te her şey true ya da false değildir. Ama JavaScript çoğu zaman şunu ister:

“Bana doğru mu, değil mi hissini ver.”

İşte bu noktada truthy / falsy devreye girer.

📌 Tanım:

  • Falsy → false gibi davranan değerler
  • Truthy → true gibi davranan değerler

Önemli nokta 👇
Bir değer boolean olmasa bile, if içinde boolean’a dönüştürülür.

if (“hello”) {

console.log(“Çalıştı”);

}

🧠 Açıklama:

  • "hello" boolean değil
  • Ama JavaScript onu true gibi yorumladı

❌ Falsy Değerler (Altın Liste – EZBERLE)

JavaScript’te SADECE 8 TANE falsy değer vardır. Nokta.

false

0

-0

0n

“”

null

undefined

NaN

🧠 Akılda kalıcı kural:

Bunların dışında kalan HER ŞEY truthy’dir.

🔬 Mini Test

if (“”) {

console.log(“Beni göremezsin”);

} else {

console.log(“Çünkü boş string”);

}

📌 Açıklama:

  • "" → boş string
  • Boş string → falsy
  • Bu yüzden else çalıştı

✅ Truthy Değerler (Şaşırtan Gerçekler)

Falsy listesinde olmayan her şey truthy’dir. Evet… her şey 😎

🤯 En Çok Şaşırtan Truthy Örnekler

if ([]) console.log(“Boş array ama true”);

if ({}) console.log(“Boş obje ama true”);

if (” “) console.log(“Boşluk var ama true”);

if (“0”) console.log(“String sıfır ama true”);

if (“false”) console.log(“Yazı olarak false ama true”);

🧠 Açıklama:

  • Array var → truthy
  • Obje var → truthy
  • İçinde karakter var → truthy

JavaScript diyor ki:

“Boş olabilir ama var.”


⚠️ En Yaygın Tuzaklar (Bug Üreten Bölge)

🚨 Tuzak 1: Boş Array Kontrolü

const items = [];

if (items) {

console.log(“Liste var”);

}

❌ Bu her zaman çalışır.

🧠 Neden?

  • Çünkü [] → truthy

✅ Doğru kontrol:

if (items.length > 0) {

console.log(“Gerçekten dolu”);

}


🚨 Tuzak 2: Sayı = 0 Problemi

let score = 0;

if (score) {

console.log(“Skor var”);

}

❌ Çalışmaz.

🧠 Çünkü:

  • 0 → falsy

✅ Güvenli kontrol:

if (score !== null && score !== undefined) {

console.log(“Skor tanımlı”);

}


🚨 Tuzak 3: Varsayılan Değer Atama (||)

const username = inputName || “Guest”;

🧠 Ne oluyor?

  • inputName falsy ise → “Guest”

Ama:

const score = userScore || 10;

userScore = 0 ise? 👉 Sonuç 10 😬

✅ Modern Çözüm: Nullish Coalescing

const score = userScore ?? 10;

🧠 ?? sadece şunlara bakar:

  • null
  • undefined

0 ile kavga etmez ❤️


🧪 Boolean’a Zorlama (Kontrolü Ele Al)

🔹 Boolean() Fonksiyonu

Boolean(0); // false

Boolean(“JS”); // true

Boolean([]); // true

Boolean(null); // false

🧠 Okunabilir ama biraz uzun.

🔹 !! Operatörü (JS Ninja Tekniği 🥷)

!!”hello” // true

!!0 // false

!![] // true

🧠 Açıklama:

  • İlk ! → tersine çevirir
  • İkinci ! → tekrar tersine çevirir
  • Sonuç → net boolean

🧠 Gerçek Hayat Kullanımları

✔️ Form Kontrolleri

if (email && password) {

submitForm();

}

📌 İki değer de truthy ise form gider.


✔️ Koşullu Render Mantığı

isLoggedIn && showDashboard();

🧠 Kısa, net, temiz.


🚦 En Sık Yapılan Hatalar

0 değerini yok saymak ❌ Boş array’i boş sanmak ❌ || ile her şeye varsayılan vermek ❌ Truthy / Falsy mantığını ezbere kullanmak


🏆 Altın Kurallar (Kaydetmelik)

✨ Falsy listesini ezberle ✨ Kritik kontrollerde açık ol ✨ || yerine gerekirse ?? kullan ✨ Okunabilir kod > kısa kod


💬 Son Söz

Truthy & Falsy, JavaScript’in en küçük ama en tehlikeli konularından biridir.

Anladığında:

  • Bug’lar azalır
  • Koşullar netleşir
  • JavaScript sana daha az sürpriz yapar 😌

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