JavaScript: Başlangıçtan İleri Seviyeye
Bölüm 6 / 312 dk okuma

Tip Dönüşümleri (Coercion)

Implicit ve explicit tip dönüşümleri, sürpriz davranışlar ve doğru kullanım.

JavaScript, gerektiğinde tipleri otomatik dönüştürür. Buna coercion denir. Genelde sorun çıkarır, bu yüzden iyi anlamak gerekir.

Explicit (açık) dönüşüm

String'e

String(123)        // "123"
String(true)       // "true"
String(null)       // "null"
(123).toString()   // "123"
`${123}`           // "123"  ← template literal

Number'a

Number("42")       // 42
Number("42.5")     // 42.5
Number("")         // 0
Number("abc")      // NaN
Number(true)       // 1
Number(false)      // 0
Number(null)       // 0
Number(undefined)  // NaN
 
parseInt("42px")   // 42
parseFloat("3.14") // 3.14
+("5")             // 5  ← unary plus

Boolean'a

Boolean(1)        // true
Boolean(0)        // false
Boolean("hello")  // true
Boolean("")       // false
Boolean([])       // true   ← dikkat
Boolean({})       // true   ← dikkat
!!"hello"         // true   ← çift değil hilesi

Implicit (örtük) dönüşüm

İşlem sırasında JavaScript tipi kendi kendine değiştirir:

"5" + 1     // "51"  — string'e dönüşür (concat)
"5" - 1     // 4     — number'a dönüşür
"5" * "2"   // 10    — ikisi de number
true + 1    // 2     — true=1
[] + []     // ""    — boş string
[] + {}     // "[object Object]"
{} + []     // 0     — bazı bağlamlarda

Karşılaştırmada coercion

"5" == 5      // true   ← tip dönüştürür
"5" === 5     // false  ← strict, dönüştürmez
0 == false    // true
"" == 0       // true
null == undefined  // true
null === undefined // false

Pratik kurallar

  1. Her zaman === kullan. == hata kaynağıdır.
  2. Açık dönüşüm tercih et. Number(x) yaz, +x değil.
  3. Boolean kontrolü:
    if (value) { ... }   // truthy check
    if (Boolean(value)) // explicit, gereksiz ama açık
  4. String birleştirme için template literal:
    `Total: ${count}`   // ✅
    "Total: " + count   // çalışır ama daha az okunaklı
⚠️Sürpriz

[1,2,3].toString()"1,2,3" döner. Dolayısıyla [1,2,3] == "1,2,3"true. JavaScript bu yüzden coercion'ı bilmek gereken bir dildir.

Bu bölümü bitirdin mi?

İlerlemen tarayıcıda saklanır, eğitim listesinde görünür.

Paylaş