JavaScript’te primitive (ilkel) veri türleri, programlamanın temel yapı taşlarıdır. Bu veri türlerinden numbers (sayılar), booleans (mantıksal değerler) ve strings (metinler) daha önce ele aldığımız konular arasındaydı. Şimdi ise null ve undefined kavramlarını inceleyeceğiz.
Bu iki kavram, ilk bakışta benzer görünebilir, ancak aralarındaki farkları anlamak oldukça önemlidir. Neyse ki, diğer veri türleri kadar karmaşık değiller.
Undefined Nedir?
JavaScript’te undefined, bir değişkenin tanımlanmış ama değer atanmamış olduğunu gösteren bir değerdir. JavaScript otomatik olarak bir değişkene başlangıçta undefined değeri atar eğer o değişkene bir değer verilmezse.
Undefined Nasıl Oluşur?
Bir değişken oluşturulup ona değer atanmazsa:
let isim;
console.log(isim); // undefined
Burada isim
değişkeni oluşturuldu, ancak herhangi bir değer atanmadı. Bu nedenle değeri undefined
oldu.
Bir fonksiyon değer döndürmezse:
function selamVer() {
console.log("Merhaba!");
}
let sonuc = selamVer();
console.log(sonuc); // undefined
selamVer()
fonksiyonu bir şey döndürmüyor, bu yüzden çağrıldığında geri döndürülen değer undefined
olur.
Bir dizide olmayan bir indekse erişmeye çalışırsak:
let meyveler = ["Elma", "Armut", "Çilek"];
console.log(meyveler[5]); // undefined
Dizide 5. indeks olmadığı için JavaScript bize undefined
döndürür.
Null Nedir?
Null, bilinçli olarak bir değişkene “boş” değer atamak için kullanılan bir değerdir. Bizim tarafımızdan atanır ve bilinçli olarak “bu değişken şu anda bir şey ifade etmiyor” demek için kullanılır.
Null Nasıl Kullanılır?
Bir değişkenin başlangıçta “boş” olduğunu belirtmek için:
let aktifKullanici = null;
console.log(aktifKullanici); // null
Burada aktifKullanici
değişkenine başlangıçta bilinçli olarak null
atanmış. Bu, sistemde şu anda giriş yapmış bir kullanıcı olmadığını açıkça belirtmek için kullanılabilir.
Bir değeri sonradan kaldırmak için:
let siparis = "Kahve";
console.log(siparis); // "Kahve"
siparis = null; // Artık sipariş yok
console.log(siparis); // null
siparis
değişkenine başlangıçta "Kahve"
atanmıştı, ancak sonra değerini kaldırıp null
yaptık. Böylece, artık sipariş olmadığını belirttik.
Undefined ve Null Arasındaki Farklar
Özellik | Undefined | Null |
Kim tarafından atanır? | JavaScript tarafından otomatik atanır | Geliştirici tarafından atanır |
Ne anlama gelir? | Değişkenin değeri tanımlanmamış | Değişken bilinçli olarak boş bırakılmış |
Matematiksel işlemde değeri | NaN (Geçersiz sayı) | 0 olarak kabul edilir |
Türü | undefined | object (JavaScript’in eski bir hatası) |
Örnek:
let x;
console.log(x); // undefined
let y = null;
console.log(y); // null
Burada x değişkeni hiç değer almadığı için undefined, y değişkeni ise bilinçli olarak null olarak atanmıştır.
Matematiksel İşlemlerde Null ve Undefined
Matematiksel işlemlerde null
ve undefined
farklı davranır:
console.log(5 + null); // 5 (null, 0 olarak değerlendirilir)
console.log(5 + undefined); // NaN (Not a Number)
- Null, toplama işleminde 0 gibi davranır.
- Undefined, matematiksel işlemlerde geçersiz bir değer (NaN) üretir.
Ne Zaman Null, Ne Zaman Undefined Kullanılır?
Senaryo | Kullanılacak Değer |
Bir değişken tanımlandı ama henüz değer almadıysa | undefined (JavaScript otomatik olarak atar) |
Bir değişkenin içeriğini bilinçli olarak “boş” yapmak istiyorsanız | null |
Bir fonksiyon, hiçbir şey döndürmüyorsa | undefined |
Kullanıcı giriş yaptıysa bir nesne içerecek, giriş yapmadıysa boş olacaksa | null |
Örnek:
let girisYapanKullanici = null; // Başlangıçta kimse giriş yapmamış
function kullaniciGirisi(kullaniciAdi) {
girisYapanKullanici = kullaniciAdi;
}
console.log(girisYapanKullanici); // null (Henüz giriş yapan yok)
kullaniciGirisi("Ali");
console.log(girisYapanKullanici); // "Ali" (Artık giriş yapan bir kullanıcı var)
Sonuç
JavaScript’te null ve undefined kavramları ilk bakışta birbirine benzeyebilir, ancak farklı amaçlara hizmet ederler:
- Undefined, JavaScript tarafından otomatik olarak atanır ve değişkenin henüz bir değer almadığını gösterir.
- Null, bir değişkenin bilinçli olarak boş bırakıldığını ifade eder ve geliştirici tarafından atanır.
Bu farkları anlamak, JavaScript’te veri yönetimini doğru yapmak açısından önemlidir. Gelişmiş projelerde özellikle veri tabanı işlemleri, kullanıcı oturum yönetimi ve hata kontrollerinde sıkça karşılaşacağımız bu iki kavramı doğru şekilde kullanmayı öğrenmek, daha temiz ve anlaşılır kod yazmamızı sağlar.