- Konu sahibi
- #1
void 0, JavaScript’in void operatörüyle 0 ifadesini değerlendirip her durumda undefined döndürmesidir. Yani pratikte aşağıdaki iki ifade aynı değeri üretir:
Kod:
void 0
undefined
Buradaki
void bir değişken, fonksiyon veya özel bir değer değil; verilen ifadeyi çalıştıran ve ifadenin sonucunu yok sayarak undefined döndüren bir operatördür. void 0 içindeki 0 yalnızca güvenli ve basit bir ifade olduğu için tercih edilir.Nasıl çalışır?
void operatörünün sağına herhangi bir ifade yazılabilir. İfade normal biçimde tamamlanırsa değeri yok sayılır ve undefined elde edilir. İfade hata fırlatırsa void bu hatayı yakalamaz.
Kod:
console.log(void 0); // undefined
console.log(void (2 + 3)); // undefined
console.log(void console.log("çalıştı"));
// Önce "çalıştı", sonra undefined yazdırılır
console.log(void (function () {
return 42;
})());
// undefined
Parantezler özellikle karmaşık ifadelerde okunabilirliği artırır.
void 0 ise genellikle doğrudan “undefined değerini üret” anlamında kullanılır.Neden doğrudan undefined yerine kullanılır?
Modern ortamda global undefined özelliği yeniden atanabilir bir değer değildir. Ancak undefined adı yerel parametre veya değişkenle hâlâ gölgelenebilir; eski ortamların global atama sorunuyla bu durumu ayırın. Bu nedenle bazı kütüphaneler, kesin olarak
undefined üretmek için void 0 kullanırdı. Modern kodda undefined yazmak çoğu durumda daha okunaklıdır; void 0 ise özellikle eski kod, minikleştirilmiş kütüphaneler veya dil bilgisini açıkça göstermek istenen yerlerde görülür.Aşağıdaki karşılaştırma kullanım kararını özetler:
| İfade | Sonuç | Tipik kullanım |
|---|---|---|
void 0 | undefined | Kesin olarak undefined üretmek |
undefined | Ad gölgelenmemişse undefined | Günlük, okunabilir uygulama kodu |
null | null | Bilerek boş değer belirtmek |
void ifade | undefined | İfadeyi çalıştırıp sonucunu yok saymak |
Yerel gölgelemeyi şu bağımsız örnek gösterir:
JavaScript:
function ornek(undefined) {
return [undefined, void 0];
}
console.log(ornek("yerel")); // ["yerel", undefined]
Bu değerler birbirinin yerine tamamen geçmez. Örneğin
null == undefined sonucu true olsa da null === undefined sonucu false olur. Değer kontrolünde hangi boşluk anlamının istendiğine göre karar verilmelidir.javascript:void(0) ne anlama gelir?
Eski web sayfalarında şu kullanım sık görülür:
Kod:
<a href="javascript:void(0)">İşlemi çalıştır</a>
Burada bağlantı, JavaScript kodunu çalıştırır;
void(0) undefined döndürdüğü için tarayıcı yeni bir sayfaya yönlenmez. Ancak bu yaklaşım güncel uygulama kodunda genellikle iyi bir tercih değildir. Gerçekten başka bir adrese gidilmiyorsa bağlantı yerine button kullanılmalı; davranış da JavaScript ile bağlanmalıdır. Böylece klavye kullanımı, anlamlı HTML ve varsayılan etkileşimler daha doğru korunur.Sık yapılan hatalar
- void’un değeri yok ettiğini sanmak:
void (someFunction())fonksiyonu engellemez; fonksiyon çalışır, yalnızca dönüş değeri yok sayılır. - null ile karıştırmak:
void 0sonucuundefined’dır;nulldeğildir. Katı eşitlikte farklı değerlerdir. - Her yerde void 0 kullanmak: Yeni uygulamalarda yalnızca
undefinedüretmek için yazılıyorsa doğrudanundefinedgenellikle daha anlaşılırdır. - javascript: bağlantısını normal bağlantı sanmak:
javascript:void(0)bir URL’ye götürmez. Navigasyon gerekiyorsa gerçek birhrefdeğeri, yalnızca eylem gerekiyorsa düğme kullanılmalıdır.
void 0, JavaScript’te güvenilir biçimde undefined üretmenin kısa yoludur. Kodda gördüğünüzde önce ifadenin çalıştırılıp yalnızca sonucunun mu yok sayıldığını, yoksa eski bir “undefined üretme” kalıbı mı kullanıldığını ayırt edin.