JavaScript'te null ve undefined Farkı Nedir?
- Tarık Tunç

- 16 Oca
- 2 dakikada okunur
JavaScript'te iki değer sürekli kafa karışıklığı yaratır: null ve undefined. İkisi de "değer yok" anlamına geliyor gibi görünür. Peki neden iki ayrı kavram var? Aralarındaki fark ne?
null Tam Olarak Ne Anlama Gelir?
null bilinçli bir tercihtir. Bir değişkene "şu an burada hiçbir şey yok" demek istediğinizde null atarsınız.

Sayılar, metinler veya nesneler için "değer yok" ifadesini belirtir. Siz kendiniz atarsınız, JavaScript otomatik vermez.
Ama ilginç bir durum var. typeof null yazdığınızda ne döner? "object" döner.
Bu bir hata mı? Evet. JavaScript'in ilk versiyonundan kalma bir bug. David Flanagan bunu "hiçbir nesne anlamına gelen özel bir nesne değeri" olarak açıklar. MDN ise doğrudan ECMAScript hatası olarak tanımlar.
Düzeltilemez mi? Düzeltilse web'deki milyonlarca site bozulur. Bu yüzden olduğu gibi kalıyor.
undefined Ne Zaman Karşımıza Çıkar?
undefined ise farklı. Bu bir anahtar kelime değil, önceden tanımlanmış global bir değişken.
JavaScript size undefined verdiğinde şunu söyler: "Bu değişken var ama içinde hiçbir şey yok."
Hangi durumlarda karşılaşırsınız?
Bir değişken tanımlayıp değer atamadığınızda undefined olur. Var olmayan bir nesne özelliğine erişmeye çalıştığınızda undefined döner. Return ifadesi olmayan bir fonksiyon çağırdığınızda undefined alırsınız. Bir fonksiyona parametre göndermediğinizde o parametre undefined olur.
typeof undefined yazdığınızda ne döner? "undefined" döner. En azından burada tutarlılık var.
Bir not: ES3'te undefined değiştirilebiliyordu. Birisi undefined = "test" yazabilirdi. ES5'ten sonra bu düzeltildi.

null ve undefined Karşılaştırması Nasıl Yapılır?
İşte kritik nokta burası.
null == undefined yazarsanız true döner. Çünkü JavaScript gevşek eşitlikte ikisini aynı kabul eder.
Ama null === undefined yazarsanız false döner. Katı eşitlik tip kontrolü yapar ve ikisi farklı tiplerdir.
Hangi operatörü kullanmalısınız? Her zaman === kullanın. Bu sadece null/undefined için değil, tüm karşılaştırmalar için geçerli bir kuraldır.
Hangisini Ne Zaman Kullanmalısınız?
Basit bir kural var.
undefined genellikle bir hata işaretidir. Beklemediğiniz bir yerde karşınıza çıkar. Bir şeylerin yanlış gittiğini gösterir.
null ise bilinçli bir karardır. "Bu değişkende şu an değer yok ama bu beklenen bir durum" dersiniz.
Bir değişkene "değer yok" atamak istediğinizde null kullanın. undefined atamaktan kaçının. Bırakın undefined JavaScript'in size verdiği bir sinyal olsun.



