JaveScript de Truthy/Falsy Durumuna Göre Metot Çalıştırılması

K. Murat Baseren
2 min readApr 20, 2024

--

Kodlarımız da çoğu zaman aşağıdaki şekilde koşullara bağlı kodlamalar yapıyoruz. Bu kodlamanın daha kısa ve okunabilir(!) şekilde farklı yazım yöntemleri bizi daha fazla rahatlatabilir.

if (this.userId != '') {
await this.loadUser();
}

Peki nedir bu yöntemler ve bu kodu nasıl, hangi yöntemlerle daha kısa ve okunabilir hale getirebiliriz bir bakalım.

1. Short-circuit Evaluation Kullanarak

JavaScript’te, mantıksal operatörler (AND ve OR) “short-circuit” davranışına sahiptir. Bu ifadenin sol tarafı yeterli bilgi sağladığında sağ tarafın değerlendirileceği anlamına gelir. Bu özellik, basit koşullu yürütmeler için kullanılabilir.

this.userId && await this.loadUser();

Bu tek satır, this.userId değeri "truthy" (yani null, undefined ya da boş string dışında bir değer) olduğunda this.loadUser() fonksiyonunu çağırır. && operatörü, ilk değer "falsy" ise (bu durumda null, undefined ya da boş string), ikinci ifadeyi çalıştırmadan işlemi sonlandırır.

2. Koşullu Ternary Operatörü Kullanarak

Ternary operatörü koşullu bir değerlendirme sağlar ve genellikle bir değere bağlı olarak bir değer atanırken kullanılır. Ancak, fonksiyon çağrıları için de kullanılabilir, fakat bu durumda biraz daha az yaygındır.

this.userId ? await this.loadUser() : null;

Bu yaklaşım, this.userId "truthy" ise this.loadUser() fonksiyonunu çağırır, değilse hiçbir şey yapmaz (null döner). Bu kullanım, if koşuluna göre daha az yaygın olabilir ve bazı durumlarda okunabilirliği azaltabilir.

3. Koşullu Fonksiyon Çağrısı (Opsiyonel Çağrı)

Eğer loadUser metodunun içinde userId'nin boş olup olmadığını kontrol ediyorsanız, bu kontrolü metodun içine taşıyabilir ve dışarıdan çağrıldığında her zaman loadUser'u çağırabilirsiniz.

await this.loadUser();

Ve loadUser içinde, bence bu biraz daha az okunabilir bir kod gibi gelebilir ama tüm iş mantığının ilgili metot içinde toplanması açısından hoş bir yaklaşım diyebilirim.

async loadUser() {
if (this.userId === '') return;
// Load user logic here
}

Bu yaklaşım, loadUser metodunun kendi içinde güvenliği sağlamasını ve userId kontrolünü kendi üzerine almasını sağlar, bu da kodun diğer yerlerinde daha temiz çağrılar yapılmasına izin verir.

Hangi Yöntem Tercih Edilmeli?

Sort-Circuit değerlendirme ve ternary operatörü yaklaşımları, koşullu mantığı daha az satırda yazmanıza olanak tanır, ancak bazı durumlarda, özellikle karmaşık uygulamalarda, kodun okunabilirliği ve bakımı açısından standart if ifadeleri daha tercih edilebilir olabilir. Fonksiyon içinde kontrol yapmak, özellikle kontrolün birden fazla yerde gerekebileceği durumlarda, yeniden kullanılabilirliği ve temizliği artırır.

--

--

K. Murat Baseren

Software Architect | .NET Developer | Project Manager | Instructor | Lifetime Learner