JavaScript uygulamaları geliştirirken kafa karıştıran durumlardan bir tanesi bir değişkenin undefined olup olmadığının tespitidir. Çünkü farklı durumlar için farklı karşılaştırmalar yapılması gerekebilir.
JavaScript undefined Nedir?
undefined bir değer atanmamış bir değişkenin ön tanımlı değeridir. Tanımsız değişken anlamında kullanılabilir. Bir değişken oluşturulduğunda eğer bir değer atanmazsa o değişken ön tanımlı olarak undefined olacaktır. Yine eğer bir fonksiyon veya bir nesne metodu bir değer döndermiyorsa o fonksiyonun dönen değeri de undefined olacaktır. Ayrıca void 0 da undefined değerini dönderir.
undefined Nasıl Oluşur?
undefined değerinin oluşması için farklı durumlar gereklidir.
- Bir değişken tanımlamak ve ona değer atamamak. let isim; , var yas;, const fiyat; şeklinde tanımlanmış ve sonrasında değer atanmamış değişkenlerin değeri undefined şeklindedir.
- Bir fonksiyon eğer geri değer döndermiyorsa o fonksiyon undefined değeri oluşturur. Mesela console.log(“Merhaba”) şeklinde bir kod yazdığımızda console.log sadece konsola yazıdığı ve bir değer döndermediği için üretteceği çıktı undefined olacaktır.
- Bir nesnenin değer döndermeyen metodlarının çıktıları undefined şeklindedir. Mesela bir oluşturuduğumuz bir nesne sadece ekranda bir alanı güncellesin ve fakat sonrasında return değeri ile geriye bir değer döndermesin. Bu durumda bu metod çalıştığında undefined değeri oluşturacaktır.
- Bir nesne eğer bir özelliğe (property) sahip değilse, olmayan bir özellik çağrıldığında undefined değeri geri dönder.
undefined Değeri Oluşturan Örnekler
İlk olarak bir kaç değişken tanımlayarak onların çıktılarına bakalım.
let isim;
console.log(isim);
// Konsola
// undefined
// yazdırır.
var fiyat;
console.log(fiyat);
// Konsola
// undefined
// yazdırır
if( fiyat === undefined) console.log("Fiyat belirtilmemiş");
// fiyat değeri undefined olduğunda
// bu karşılaştırma sonucu true döner ve
// konsola
// Fiyat berlirtilmemiş
// yazdırılır
Bir fonskiyon değer döndermediğindeki sonucuna bakalım.
const konsolaYaz = (bilgi) => {
console.log(bilgi);
}
const sonuc = konsolaYaz("Merhaba Netbilio");
// Konsola
// Merhaba Netbilio
// yazdırılır
console.log(sonuc);
// Konsola
// undefined
// yazdırılır.
// Çünkü konsolaYaz fonksiyonu bir değer dönmediği için
// bu fonksiyon undefined değeri dönderir.
Uncaught ReferenceError: … is not defined Hatası
Eğer bir değişken tanımlanmadan kullanılırsa Uncaught ReferenceError: … is not defined hatası oluşacaktır. Bu hatayı aldığımızda … yazan yere gelen değişken isminin daha önce tanımlanmadığını anlamamız gerekir. Bir değişken tanımlanmadığı zaman ise o değişkenin değeri undefined OLMAZ. Çünkü ortada bir değişken yoktur bu nedenlede yukarıdaki hata mesajı alınır.
Örnek verecek olursak
const sonuc = 5 + toplam;
// Uncaught ReferenceError: toplam is not defined
// hatası oluşur
// çünkü toplam adında bir değişken
// daha önce tanımlanmamıştır.
Bir Değişken undefined Değeri İle Nasıl Karşılaştırılır?
Eğer undefined nedir ve nasıl oluştur bilirseniz, ona göre işlem yapabilirsiniz. Şimdi yukarıda işlediğimiz konular ışığında undefined karşılaştırması yapalım.
Eğer bir değişkenin daha önce tanımlandığını biliyorsa ve bir değer alıp almadığını öğrenmek istiyorsak.
degisken == undefined;
degisken === undefined;
Şeklinde karşılaştırabiliriz. Örneğin
let fiyat;
if( fiyat !== undefined) console.log("Ürün fiyatı: " + fiyat);
else console.log("Ürün fiyatı girilmedi.");
// Ekrana
// Ürün fiyatı girilmedi
// yazıdırır.
Eğer değişkenin oluşturulup oluşturulmadığını bilmiyorsak bu durumda
typeof degisken === 'undefined'
typeof(degisken) === 'undefined'
typeof(degisken) == 'undefined'
typeof degisken !== 'undefined'
Şeklinde bir karşılaştırma yapabiliriz. Bu karşılaştırmada ‘undefined’ değerinin tırnak içerisinde olduğunu unutmayın.
Yine eğer tarayıcı üzerinde çalışan bir uygulama yapıyorsanız ve var ile global bir değişken tanımladıysanız bu durumdan window nesnesi üzerinden işlem yapabilirsiniz. Bu durumda değişken daha önce tanımlanmış veya tanımlanmamış ise de geriye undefined değeri dönderir. Eğer bir değer verilmişse o zaman o değer geri dönderilecektir.
console.log(window.olmayanDegisken);
// Konsola
// undefined
// değerini yazdırır
var birDegisken;
console.log(window.birDegisken);
// Konsola
// undefined
// değerini yazdırır
birDegisken = 29;
console.log(window.birDegisken);
// Konsola
// 29
// yazdırır.
Sonuç
Bir programlama dilini kullanıyorsak, detayları iyi bilmemiz bizim için oldukça faydalıdır. Çünkü farklı durumlarda aynı kod farklı sonuçlar üretebilir. JavaScript undefined de bu şekilde incelenmesi gereken bir değişken tipidir. Bu nedenle nasıl kullanıldığını iyi bilmek gerekir.
Sorularınızı ve eklemek istediklerinizi yorumlardan bize iletebilirsiniz.
