JavaScript’te “Nullish Coalescing” Operatörü (??)
Bu yazımızda, JavaScript’te null
veya undefined
kontrolü için kullanılan “nullish coalescing” operatörü (??
) üzerinde duracağız.
“Nullish Coalescing” Operatörü (??)
Kelime anlamı olarak “nullish”, “null benzeri” anlamına gelirken, “coalescing” ise “birleşme” veya “bir araya gelme” anlamına gelmektedir. JavaScript’te çift soru işareti (??
) ile gösterilen bu operatör, iki değer arasında seçim yapmanızı sağlar.
Bu operatör, eğer ilk değer null
ya da undefined
ise ikinci değeri; aksi takdirde, ilk değeri döndürür. Söz dizimi aşağıdaki gibidir:
degisken ?? varsayilanDeger
Eğer degisken
null ya da undefined ise, bu operatör varsayilanDeger
i döndürür. Eğer degisken
null
ya da undefined
dışında bir değere sahipse, bu değeri döndürür. Yani kontolünü yaptığımız değer “null” veya “undefined” ise, operatörün sağ tarafındaki değer döndürülür. Eğer değilse, sol tarafındaki değer döndürülür.
Bu yönüyle ??
operatörü, özellikle belirli bir değerin atanmamış olduğu durumlarda varsayılan değer belirlemek için yararlıdır. Aşağıdaki örneği inceleyiniz:
function hesaplaToplam(fiyat, kargo, indirim) {
fiyat = fiyat ?? 0;
kargo = kargo ?? 0;
indirim = indirim ?? 0;
return fiyat + kargo - indirim;
}
let toplamFiyat = hesaplaToplam(100, 20);
console.log(toplamFiyat); // 120
Yukarıdaki örnekte, hesaplaToplam
adlı bir fonksiyon oluşturduk. Bu fonksiyonu, üç parametre alacak şekilde ayarladık: fiyat
, kargo
ve indirim
. Eğer bu değerlerden herhangi biri fonksiyona geçirilmezse (yani null ya da undefined ise), nullish coalescing operatörü (??) kullanarak bu değerlere 0 atıyoruz. Sonrasında, bu değerleri toplayarak ve indirimi çıkartarak toplam fiyatı hesaplıyoruz.
Fonksiyonu çağırırken, sadece fiyat
ve kargo
değerlerini geçiriyoruz (100 ve 20). Bu durumda, indirim
parametresi için değer geçirilmediği için ?? operatörü sayesinde indirim
değeri 0 olarak belirleniyor.
Sonuç olarak, toplamFiyat
değişkeni 100 (fiyat) + 20 (kargo) – 0 (indirim) = 120 değerini alır ve konsolda bu değeri yazdırırız.
Neden “Nullish Coalescing” Kullanılıyor?
“Nullish coalescing” operatörünün neden sadece “null” ve “undefined” değerlerini kontrol ettiğini anlamak için, bu iki değerin JavaScript’te taşıdığı özel anlama odaklanmak gerekir.
“Null”, bir değişkenin bilinçli olarak bir değere sahip olmadığını belirtir. Bir değişkenin değeri bilinmiyorsa veya henüz atanmamışsa “null” olarak tanımlanabilir. Diğer yandan “undefined”, bir değişkenin tanımlandığını ancak bir değere atanmadığını gösterir.
Ancak bu iki değerin dışında, JavaScript’te “falsy” olarak adlandırılan false
, 0
veya boş bir string (""
) gibi başka değerler de bulunmaktadır. Fakat bu değerler, gerçekte geçerli değerlerdir ve belirli bir anlam taşırlar.
İşte “nullish coalescing” operatörü tam da bu noktada devreye girer. Bu operatör, sadece “null” ve “undefined” değerlerini kontrol ederek, diğer “falsy” değerlerin yanıltıcı sonuçlara yol açmasını engeller. Bu sayede, kod yazarken daha kesin ve öngörülebilir sonuçlar elde edebiliriz.
“Nullish coalescing” operatörü, bu özel iki değeri hedef alarak, kod yazarken daha kesin ve öngörülebilir sonuçlar elde etmemizi sağlar. Mesela, bir değişkenin değerinin “0” (sıfır) olması bazı senaryolarda geçerli bir değer olabilmektedir. Böylesi senaryolarda “or” (||
) operatörünü kullanırsak, “0” değeri “falsy” olarak değerlendirilir ve beklenmeyen sonuçlar elde edebiliriz. İşte “nullish coalescing” operatörünü kullanarak sadece “null” ve “undefined” değerlerini kontrol edebilir ve bu tür yanıltıcı durumların önüne geçeriz.