Menu

JavaScript Truthy ve Falsy Değerler: Tam Liste

JavaScript'te hangi değerler truthy, hangileri falsy sayılır? Tam falsy listesi ve boolean dönüşümünün gerçek kodda nasıl davrandığını adım adım görelim.

Her Değerin Bir Boolean Ruh Hâli Vardır

JavaScript, boolean beklediği her yere herhangi bir değer koymana izin verir — bir if içinde, while koşulunda, && veya || operatörlerinin yanında. Böyle bir durumda değer otomatik olarak true ya da false'a dönüştürülür. false'a dönüşen değerlere falsy, geri kalan her şeye ise truthy denir.

index.js
Output
Click Run to see the output here.

Dönüştürme fonksiyonu yok, açık bir cast da yok — JavaScript bunu otomatik olarak hallediyor. Kurallar sabit ve az sayıda; bu yüzden falsy listesini bir kez öğrendiğinde geri kalan tüm durumlar kendiliğinden yerine oturuyor.

JavaScript Falsy Değerler Listesinin Tamamı

Dilde yalnızca yedi değer falsy kabul edilir. Bunların dışında kalan her şey truthy'dir.

index.js
Output
Click Run to see the output here.

Hepsi bu kadar. İşte liste:

  • false — boolean'ın kendisi.
  • 0 ve -0 — her iki sıfır da.
  • 0n — BigInt sıfır.
  • "" — boş string (tek tırnak, çift tırnak, backtick — fark etmez).
  • null — "bilerek hiçbir şey" değeri.
  • undefined — "atanmamış" değeri.
  • NaN0 / 0 gibi geçersiz matematik işlemlerinin sonucu.

Bu yediyi ezberle. Sonra emin olmadığın herhangi bir değer için kendine şunu sor: "Bu yedisinden biri mi?" Değilse, truthy'dir.

Sürpriz olanlar: "0", [] ve {}

Yeni başlayanların en çok yandığı yer burası. Bir sürü değer boş görünür ama aslında truthy'dir:

index.js
Output
Click Run to see the output here.

String'ler yalnızca sıfır karaktere sahipse falsy kabul edilir. "0" bir karakter içerdiği için truthy'dir. Diziler ve objeler ise — içleri boş olsa bile — her zaman truthy'dir. Çünkü JavaScript bunları obje olarak değerlendirir ve tüm objeler, içinde ne olursa olsun truthy sayılır.

Python'dan geliyorsanız burada ciddi bir kafa karışıklığı yaşayabilirsiniz. Python'da [] ve {} falsy'dir; ama JavaScript'te değil.

"Boş mu?" Kontrolünü Doğru Yapmak

[] ve {} truthy olduğu için, boşluk kontrolü yapmak amacıyla bunları doğrudan bir if içine koyamazsınız. Açıkça belirtmeniz gerekir:

index.js
Output
Click Run to see the output here.

Aynı şey stringler için de geçerli; eğer sadece boşluktan oluşan stringleri de boş saymak istersen:

index.js
Output
Click Run to see the output here.

Truthy/falsy pratik bir kısayol, ama verinin sizin için "boş" ne demek olduğunu düşünmekten sizi kurtarmaz.

Gerçek bir boolean'a dönüştürmek

Bazen elinizde truthy'ye yakın bir değer değil, tam olarak true ya da false olmasını istersiniz. Bunun için iki yaygın yöntem var:

index.js
Output
Click Run to see the output here.

Boolean(x) açık (explicit) dönüşümdür. !!x ise aynı şeyin kısa yoldan yazılışıdır — ilk ! değeri boolean'a çevirip tersine çevirir, ikinci ! tekrar tersine çevirerek orijinal mantıksal değere döndürür. İkisi de sıkça kullanılır. !! daha kısadır; Boolean() ise daha okunaklıdır.

Bir fonksiyonun temiz bir boolean döndürmesi gerektiğinde return ifadelerinde !! kullanımını sık sık görürsün:

index.js
Output
Click Run to see the output here.

&& ve || ile Truthy/Falsy Davranışı

JavaScript'te mantıksal operatörler aslında true veya false döndürmez — operandlardan birini döner. Hangisinin döndüğü ise truthy/falsy durumuna bağlıdır:

index.js
Output
Click Run to see the output here.

İşte value || defaultValue kalıbının varsayılan değer atamak için neden bu kadar yaygın olduğunu buradan anlayabilirsiniz. Ama bir tuzağı var: tüm falsy değerleri aynı kefeye koyuyor; yani çoğu zaman geçerli birer girdi olan 0 ve "" de falsy sayıldığı için varsayılanla değiştiriliyor:

index.js
Output
Click Run to see the output here.

Yalnızca null veya undefined durumlarında bir yedek değer kullanmak istiyorsan, bunun yerine nullish coalescing operatörünü (??) tercih et. Bu konuyu ayrı bir dokümanda ele alıyoruz.

Hızlı Başvuru Tablosu

index.js
Output
Click Run to see the output here.

Bir kenara not edin, monitörünüze yapıştırın ve yolunuza devam edin.

Sırada: Iterator'lar ve Generator'lar

Artık koşullar ve döngüler cebinizde olduğuna göre, bir sonraki bölümde JavaScript'in değerleri ihtiyaç anında nasıl ürettiğine bakacağız. Iterator ve generator'lar; for...of, spread operatörü ve pek çok modern API'nin arkasındaki mekanizmadır — hemen ardından geliyorlar.

Sıkça Sorulan Sorular

JavaScript'te falsy değerler nelerdir?

Tam olarak yedi tane: false, 0, -0, 0n (BigInt sıfır), '' (boş string), null, undefined ve NaN. Bunların dışındaki her şey truthy'dir — '0', 'false', [] ve {} dahil. Kısa falsy listesini ezberleyin, geri kalan her değer için cevabı eleme yoluyla bulursunuz.

JavaScript'te boş dizi truthy midir, falsy midir?

Truthy. if ([]) { ... } bloğu çalışır ve bu, Python veya PHP'den gelenleri çoğu zaman şaşırtır. Diziler ve objeler birer object'tir ve tüm objeler içeriği ne olursa olsun truthy kabul edilir. Boş diziyi kontrol etmek istiyorsanız açıkça arr.length === 0 yazın.

JavaScript'te bir değeri boolean'a nasıl çeviririm?

İki yolu var: açık hali Boolean(value), kısayol hali !!value (çift değilleme — önce coerce edip sonra geri çeviriyor). İkisi de aynı truthy/falsy kurallarını takip eder. Sadece truthy-ish bir şey değil, gerçek bir true/false istediğinizde kullanın.

Coddy ile kodlamayı öğren

BAŞLA