Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
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:

İfadeSonuçTipik kullanım
void 0undefinedKesin olarak undefined üretmek
undefinedAd gölgelenmemişse undefinedGünlük, okunabilir uygulama kodu
nullnullBilerek boş değer belirtmek
void ifadeundefinedİ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]
Burada void bir isim araması yapmadan undefined üretirken, aynı yazılı addaki parametre verilen metni tutar. Yeni kodda bu tür gölgelemeden kaçınmak daha okunabilir bir çözümdür.

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​


  1. 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.
  2. null ile karıştırmak: void 0 sonucu undefined’dır; null değildir. Katı eşitlikte farklı değerlerdir.
  3. Her yerde void 0 kullanmak: Yeni uygulamalarda yalnızca undefined üretmek için yazılıyorsa doğrudan undefined genellikle daha anlaşılırdır.
  4. javascript: bağlantısını normal bağlantı sanmak: javascript:void(0) bir URL’ye götürmez. Navigasyon gerekiyorsa gerçek bir href değ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.

Sık sorulan sorular​

void ile başlattığım Promise’in hatası yakalanmış olur mu?​

Hayır. void yalnız ifade sonucunu kullanmayacağınızı belirtir; Promise reddini işlemez ve işlemi iptal etmez. Gerekiyorsa .catch ile veya await/try-catch akışıyla hata yolunu ayrıca ele alın. Dönüş değerini yok saymak, uygulamanın işi başarıyla tamamladığını göstermez.

void bir hatayı sessizce undefined değerine çevirir mi?​

Hayır. Sağdaki ifade fırlatırsa hata dışarı yayılır. Örneğin geçersiz JSON’u ayrıştıran bir çağrının başına void koymak parse hatasını düzeltmez. Böyle bir durumda uygun hata yakalama kullanın; void’u try/catch yerine kullanmayın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.