JavaScript dünyasına adım attığınızda, karşınıza sadece true
ve false
gibi açıkça belli olan mantıksal değerler çıkmaz. Birçok başka veri türü de JavaScript tarafından bir karar vermek üzere doğru (truthy) veya yanlış (falsy) gibi değerlendirilir. Bu kavramlar başlangıçta kafa karıştırıcı olabilir, ama bir kere anladığınızda kod yazmayı hem daha kolay hem daha okunabilir hale getirir.
Bu yazıda, truthy ve falsy kavramlarını en temel haliyle açıklayacak, hangi değerlerin nasıl davrandığını örneklerle gösterecek ve neden bu bilginin önemli olduğunu anlatacağız.
Değerler ve Mantıksal Kararlar
JavaScript’te koşullu ifadelerle çalışırken genellikle if
yapısını kullanırız:
if (koşul) {
// bir şey yap
}
Burada koşul
kısmına yazılan her şey JavaScript tarafından “doğru mu, yanlış mı?” olarak değerlendirilir. Ancak bu değerlendirme her zaman true
veya false
gibi açıkça yazılmış Boolean (mantıksal) değerlerle yapılmaz. JavaScript, verilen değeri içsel olarak bir Boolean’a dönüştürür. Bu dönüşüm sonucunda değerin davranışı ya truthy (doğru gibi) ya da falsy (yanlış gibi) olur.
Falsy Olarak Kabul Edilen Değerler
JavaScript’te yalnızca altı adet değer falsy kabul edilir. Yani bunlar bir if
bloğu içinde kontrol edildiğinde yanlış gibi davranır, yani if
bloğu çalışmaz.
Değer | Anlamı |
false | Zaten doğrudan yanlış |
0 | Sıfır, sayısal boşluk |
"" | Boş string, hiç karakter yok |
null | Hiçbir şeyi temsil etmiyor |
undefined | Tanımlanmamış değer |
NaN | Geçersiz sayı (“Not a Number”) |
Örnek:
let kullanıcıAdı = "";
if (kullanıcıAdı) {
console.log("Hoş geldin!");
} else {
console.log("Kullanıcı adı girilmedi.");
}
Bu kodda kullanıcı adı boş olduğu için if
içi çalışmaz, else
çalışır. Çünkü ""
falsy bir değerdir.
Truthy Olarak Kabul Edilen Değerler
Falsy olanların dışında kalan tüm değerler truthy kabul edilir. Bu değerler bir if
bloğunda kullanıldığında, JavaScript onları doğru gibi değerlendirir ve if
bloğu çalışır.
Truthy kabul edilen bazı değer örnekleri:
"JavaScript"
→ dolu bir yazı
42
→ sıfırdan farklı bir sayı
-10
→ eksi olsa bile sayı
" "
→ içinde sadece boşluk olsa bile string dolu
[]
→ boş bir dizi
{}
→ boş bir nesne
function() {}
→ fonksiyonlar
Örnek:
let yaş = 17;
if (yaş) {
console.log("Yaş girildi: " + yaş);
} else {
console.log("Yaş bilgisi yok.");
}
Bu örnekte yaş
sıfırdan farklı olduğu için (17), if bloğu çalışır. Çünkü 17
truthy’dir.
Neden Bu Kadar Önemli?
Program yazarken çok sık kullanıcıdan gelen verileri kontrol ederiz:
- Bir kullanıcı giriş yaptı mı?
- Formda boş alan kaldı mı?
- Sunucudan veri geldi mi?
İşte bu gibi durumlarda, if (değer)
şeklinde yazmak çok pratik olur. Ekstra kıyaslama yapmadan sadece değerin truthy mi falsy mi olduğunu kontrol ederek karar verebiliriz.
Örnek:
let email = prompt("Email adresinizi girin:");
if (email) {
console.log("Teşekkürler! Giriş başarılı.");
} else {
console.log("Lütfen email adresinizi girin.");
}
Kullanıcı bir şey girerse (örneğin “[abc@mail.com](mailto:abc@mail.com)”), if (email)
truthy olur ve ilk mesaj gösterilir. Hiçbir şey yazmazsa, boş string girilir ve bu falsy olduğu için ikinci mesaj gösterilir.
Dikkat Edilmesi Gereken Bir Nokta
Bazı durumlar kafa karıştırabilir. Mesela " "
yani sadece boşluk içeren bir string, truthy kabul edilir. Bu yüzden kullanıcı gerçekten bir şey yazdı mı diye kontrol etmek istiyorsanız, sadece if (input)
değil, boşlukları da temizleyerek kontrol etmek daha doğru olur:
if (email.trim()) {
// Gerçekten bir şey yazılmış
}
Özet
- JavaScript’te tüm değerler ya truthy ya da falsy kabul edilir.
- Bu bilgi sayesinde
if
gibi yapılar çok daha sade ve etkili kullanılabilir.
- Falsy değerler:
false
, 0
, ""
, null
, undefined
, NaN
- Diğer her şey truthy’dir.