JavaScript Uncaught ReferenceError

Uncaught ReferenceError: … is not defined

JavaScript nesneleri ile çalışırken farklı hatalar ile karşılaşıyoruz. Bunlardan bir tanesi Uncaught ReferenceError: … is not defined hatasıdır. Burada  yazan yere sizin bu hatayı almanıza neden olan değişken / nesne adı gelecektir. Mesela uye isimli bir obje üzerinde çalıştığımızı düşünelim bu hata

Uncaught ReferenceError: uye is not defined

şeklinde olacaktır. Bu hata genel olarak bir nesne tanımlanmadan kullanıldığı zaman oluşur. Yine uye nesnesinden devam edelim. Kodumuzun bir yerinde

    console.log(uye.isim);
    // Hata mesajı 
    // Uncaught ReferenceError: uye is not defined

kodu ile consola üyenin adını yazdırmak istediğimizde bu hatayı alacağız. Çünkü uye adında bir nesne oluşturmadık. Bu kodun doğrusu şu şekilde olacaktır.

    const uye = {
        isim: 'Selami',
        sehir: 'Kocaeli',
    }

    console.log(uye.isim);

    // Konsola
    // Selami
    /// yazar.

Uncaught ReferenceError Nasıl Düzeltilir?

Sorunun sebebi nesnenin tanımlanmamış olmasıdır. Bu nedenle kullanılmadan önce nesnenin tanımlanması ve gerekirse oluşturulduğunun denetlenmesi gerekir. Özellikle veritabanı gibi farklı ortamlardan alınan bilgilerden bir nesne oluşturuluyorsa öncelikle bu nesnenin oluşturulup oluşturulmadığı test edilmelidir. Bunun için typeof kullanılabilir.

    typeof uye;
    // Ekrana 
    // undefined
    // yazdırır

Biz bu durumda nesnenin var olup olmadığını bir if ifadesi ile denetleyebiliriz.

    if(typeof uye !== undefined) console.log('Nesne oluşturuldu');
    else console.log('Nesne oluşturulmadı');

    // Ekrana
    // Nesne oluşturulmadı
    // yazacaktır. Çünkü nesne oluşturmadan denetlendi

Şimdi birde uye nesnemizi oluşturup tekrar deneyelim.

    const uye = {
            isim: 'Ali',
            sehir: 'Kocaeli'
    }

    if(typeof uye !== undefined) console.log('Nesne oluşturuldu');
    else console.log('Nesne oluşturulmadı');

    // Ekrana 
    // Nesne oluşturuldu
    // yazacaktır. Çünkü uye objesi oluşturlduktan sonra
    // denetlendi.

Not: if ve else ifadesinden sonra tek satırlık komutlar kullanıldığından ( tek ifade ) süslü parantez kullanılmamıştır.

Sonuç

Bir nesne eğer farklı bir yerden alınan bilgilerden oluşturuluyorsa, nesne kullanılmadan önce typeof ile veya farklı bir şekilde denetlenmelidir. Aksi halde eğer bir şekilde nesne oluşturulmadan kullanılıras Uncaught ReferenceError hatası alınacaktır.

Sorularınız ve ek bilgileriniz için yorum bölümünü kullanabilirsiniz.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir