JavaScript’te “Bang Bang” (!!) Operatörü
Bu yazımızda, JavaScript’te bang bang ya da double bangs olarak adlandırılan !!
operatörüne odaklanacağız. Bang bang, iki ünlem işaretinden oluşur ve özellikle koşullu ifadelerle veya boolean değerlerle çalışırken kullanılır.
Eğer JavaScript’te bu operatörü kullanmadıysanız veya ne işe yaradığını tam olarak bilmiyorsanız, endişelenmeyin. Bu yazı, !!
operatörü hakkında tüm merak ettiklerinizi cevaplayacaktır.
“Bang Bang” (!!) Operatörü
JavaScript’te !!
operatörü, bir değerin boolean karşılığını döndürür. Yani, bir ifadeye !!
operatörü uygulandığında, sonuç her zaman true
veya false
şeklinde olacaktır. Yani bu demektir ki bang bang bir değerin Boolean karşılığını döndürmek için kullanılan bir tür dönüşüm işlemidir.
“Neden adı bang bang?” diye bir sorabilirsiniz. Aslında “Bang” terimi, programlama jargonunda ünlem işareti (!) için kullanılan argo bir terimdir. Bu nedenle, ünlem işaretini iki kez kullanınca da adı “Bang Bang” olmuştur. Örnek üzerinden gösterelim:
1 2 3 4 5 |
let maybeTruthy = "Merhaba"; let definitelyBoolean = !!maybeTruthy; console.log(definitelyBoolean); // true |
Yukarıdaki örnekte, maybeTruthy
adında bir değişken tanımladık ve ona bir string değeri atadık. Stringler boş olmadıklarında doğru (truthy) olarak değerlendirilirler. Ancak bu doğruluk durumu kesin bir boolean değil, sadece doğru gibi davranan bir değerdir. !!
işlemiyle bu değeri kesin bir boolean değere (true
veya false
) dönüştürüyoruz. Bir başka örneği inceleyelim:
1 2 3 4 5 |
var myVar = ''; console.log(!!myVar); // false myVar = 'hello'; console.log(!!myVar); // true |
Yukarıdaki örnekte, !!
işareti kullanarak myVar
değişkeninin Boolean değerini döndürüyoruz. İlk durumda, myVar
boş bir dize olduğu için, !!myVar
ifadesi false
değerini döndürmektedir. İkinci durumda ise, myVar
değişkeni ‘hello’ olarak tanımlandığından, !!myVar
ifadesi true
değerini döndürmüştür.
Yukarıdaki örnekte boş dizenin (“”) false döndürdüğünü fark etmişsinizdir. Bu durumda hangi ifadelerin false olarak kabul edildiğini merak edebilirsiniz. Aşağıdaki ifadeler false
olarak kabul edilir:
false
0
NaN
null
undefined
''
,""
Yani, JavaScript’te bang bang (!!
) operatörü ile birlikte, yukarıdaki ifadelerin boolean karşılıklarının false
olduğunu söyleyebiliriz. Bunun dışında kalan ifadeler ise true
değerini döndürecektir. Bu bilgi, özellikle koşullu ifadelerde veya değerlerin kontrolünde oldukça faydalı olabilir. Örneğin:
1 2 3 4 5 6 7 8 9 10 |
var x = 1; if (x) { // will run! } while (x) { // will run, once! x = false; } |
Yukarıdaki kod arka planda aslında aşağıdaki gibi çalışacaktır:
1 2 3 4 5 6 7 8 9 10 |
var x = 1; if (x == true) { // will run! } while (x == true) { // will run, once! x = false; } |
x’in sayısal değerinin 1 olması, onu true
olarak döndürecektir. Bundan dolayı kodumuzun if
ve while
blokları içinde çalışması mümkün olmuştur.
Özetle, JavaScript’te Bang Bang işlemi (yani !!
), bir değeri doğru ya da yanlış (true veya false) olacak şekilde zorlamak için kullanılır. Bu işlem, özellikle bir değerin doğruluk durumunu kontrol etmek istediğimizde veya bir değeri kesin olarak boolean türüne dönüştürmemiz gerektiğinde kullanışlıdır.