🤡 JavaScript Seni Troll’lediği 10 An

🤡 JavaScript Seni Troll’lediği 10 An

Kod doğru. Sonuç yanlış. JavaScript sana bakıp gülümsüyor.

JavaScript yazarken bazen şunu hissedersin:

“Ben bu dili öğreniyorum…
ama sanki dil beni çözmeye çalışıyor.”

Sebep belli:
Type coercion, referans karşılaştırmaları ve
JavaScript’in ‘ben daha iyisini biliyorum’ tavrı.

Hadi tek tek deşifre edelim.


1️⃣ "5" + 1"51"

“Toplama istedim, mesajlaşma yaptı.”

"5" + 1
// "51"

Ne oldu?

  • + operatörü iki farklı kişiliğe sahiptir
    • Sayı görürse → matematik
    • String görürse → string birleştirme

JavaScript şunu düşündü:

“Biri string… o zaman herkes string olsun.”

String(1) → "1"
"5" + "1" → "51"

📌 İpucu:

Number("5") + 1 // 6

Ders: + güvenilmezdir.
Matematik yapacaksan tipi SEN belirle.


2️⃣ "5" - 14

“Az önce string’ti, şimdi matematik yaptı?”

"5" - 1
// 4

Neden farklı davrandı?

  • - operatörü string tanımaz
  • Zorla number’a çevirir
Number("5") - 1 // 4

📌 JavaScript kişilik özeti:

  • + → kararsız
  • - * / → matematikçi

3️⃣ [] == falsetrue

“Bu noktada JavaScript beni sınavdan geçiriyor.”

[] == false
// true

Adım adım felaket:

[]        → ""
""        → 0
false     → 0
0 == 0    → true

📌 Gerçek:
== operatörü karşılaştırma yapmaz,
önce herkesi birbirine benzetir.

❌ Yapma:

if (value == false)

✅ Yap:

if (value === false)


4️⃣ [] == ![]true

“Bu artık kişisel.”

[] == ![]
// true

Olanlar:

![]      → false
[]       → ""
""       → 0
false    → 0

Sonuç:

0 == 0 // true

📌 Ders:

! + == + array = kaos


5️⃣ [1,2] == "1,2"true

“Array mi string mi, kimse emin değil.”

[1,2] == "1,2"
// true

Sebep:

[1,2].toString() // "1,2"

Sonra:

"1,2" == "1,2"

📌 Altın kural:

Array’leri asla == ile karşılaştırma
Kalbin kırılır.


6️⃣ NaN === NaNfalse

“Kendisiyle bile eşit değil.”

NaN === NaN
// false

Çünkü:

  • NaN = “Not a Number”
  • Tanımsız bir sonuç
  • Tanımsız şeyler karşılaştırılamaz

📌 Doğru kontrol:

Number.isNaN(value)

❌ Yapma:

value === NaN


7️⃣ typeof NaN"number"

“Bu noktada kabulleniş başlar.”

typeof NaN
// "number"

JavaScript diyor ki:

“Evet sayı değil…
ama sayı kategorisinde.”

📌 Bilgi:
Bu JavaScript’in en eski bug’larından biri
ve artık “özellik” sayılıyor.


8️⃣ null == undefinedtrue

“Ayrılar ama aynı muamele.”

null == undefined
// true

Ama:

null === undefined
// false

Açıklama:

  • == → “İkisi de yok gibi”
  • === → “Ama aynı şey değiller”

📌 Pratik kontrol:

value == null
// hem null hem undefined yakalar

(Bilinçli kullanılırsa faydalı)


9️⃣ 0.1 + 0.2 !== 0.3

“Basit matematik bile mi zor?”

0.1 + 0.2
// 0.30000000000000004

Sebep:

  • Floating point hassasiyeti
  • Binary sistem

📌 Çözüm:

Math.round((0.1 + 0.2) * 100) / 100

veya:

+(0.1 + 0.2).toFixed(2)


🔟 [] === []false

“Aynı ama değil.”

[] === []
// false

Çünkü:

  • Array ve object’ler referansla karşılaştırılır
let a = [];
let b = a;

a === b // true

📌 Ders:

Object’lerde “aynı içerik” ≠ “aynı şey”


🧠 Final Gerçek (Bunu Kaydet)

JavaScript seni troll’lemez.
Kuralları gizlidir.

Hayatta kalma rehberi:

  • === kullan
  • ==’dan uzak dur
  • 🧠 Tip dönüşümünü sen yap
  • 🤡 Garip sonuçta “ben yanlışım” deme, önce JS’i suçla

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