JavaScript’te “Truthy” ve “Falsy” Kavramları
JavaScript’te “truthy” ve “falsy” kavramları, bir ifadenin doğru (true) ya da yanlış (false) olarak kabul edildiği değerleri ifade eder.
“Truthy” olan değerler koşullu ifadelerde true
olarak değerlendirilir. Buna karşılık “falsy” olan değerler ise koşullu ifadelerde false
olarak değerlendirilir. Peki, bu durumda neler “truthy” neler “falsy” olarak değerlendirilir?
Aslında bu soruya hangilerinin “falsy” olduğunu gösterip geri kalanların “truthy” olduğunu söyleyerek cevabımıza ulaşabiliriz. Bakınız:
- false
- 0
- NaN
- null
- undefined
- “” (boş string değerleri)
“Falsy” olmayan tüm değerler “truthy” olarak kabul edilir. Yani, bir değer yukarıda listelenen falsy değerlerden biri değilse, bu değer truthy’dir diyebiliriz.
Bu kavramlar, özellikle kontrol yapılarında (örneğin if
ifadeleri) bir değerin doğru mu yoksa yanlış mı olarak değerlendirileceğini belirtir. Örneğin:
1 2 3 4 5 6 7 8 9 |
// Truthy if (1) { console.log("Bu mesaj gösterilir çünkü 1 bir 'truthy' değerdir."); } //falsy if ("") { console.log("Bu mesaj gösterilmez çünkü boş string bir 'falsy' değerdir."); } |
JavaScript’te truthy ve falsy özelliği, tip dönüştürme olarak adlandırılan type coercion sistemine dayanır ve genellikle kodunuzda bir ifadeyi true ya da false olarak değerlendirmeniz gerektiğinde çok kullanışlıdır.
Ancak bu aynı zamanda kod tahmin edilebilirliğini azalttığı için karmaşık hale gelebilir çünkü bazen kafa karışıklığına yol açabilen beklenmedik sonuçlar ortaya çıkabilir. Bu nedenle, neyin “truthy” ve “falsy” olduğunu bilmemiz ve ne zaman kullanacağımızı anlamak önemlidir.
Zira, bir değişkenin var olup olmadığını kontrol etmek isteyeceğiniz dönemler olacak ve bunun belirli bir değere eşit olmasından ziyade, yalnızca değişkene bir değer atanıp atanmadığını kontrol etmek isteyeceğiz. Aşağıdaki örneği inceleyiniz:
1 2 3 4 5 6 7 8 9 10 11 |
// Truthy & Falsy let username = ""; let defaultName; if (username) { defaultName = username; } else { defaultName = "John"; } console.log(defaultName); // John |