Cannot set properties of Undefined.

Cannot set properties of Undefined Hatası ve Çözümü

JavaScript nesneleri ile çalışırken aldığımız bir çok hata vardır. Bunlardan bir tanesi de **Cannot set properties of Undefined** hatasıdır. Bu yazımızda bu hatayı neden aldığımızı ve çözüm yollarını göreceğiz.

Cannot set properties of Undefined Hatası Nedir?

JavaScript nesneleri ile işlem yaparken bir nesne oluşturmadan nesnenin bir özelliğine veya metoduna ulaşmak istedindiğinde alınan bir hatadır. Böyle bir nesne yoktur bu nedenle işlem yapamazsınız anlamına gelir.

Şimdi bir örnek üzerinde bu hatayı görelim. Mesela customer adlı bir nesnemiz olsun fakat nesneyi sadece tanımlayalım ve bir değer vermeyelim. Sonrasında bu nesne üzerinden customer.name değerine ulaşmak isteyelim.

const customer = null;

customer.name = 'Ahmet Yavuz';

// Hata oluşur
Uncaught TypeError: Cannot set properties of null (setting 'name')

hatası oluşuyor. Neden bu hata oluştu? Çünkü daha customer nesnesini oluşturmadık. Sadece tanımını yaptık.

Çözüm Yöntemi

Aslında hata belli olduğuna göre çözümde belli görünüyor. Yapmamız gereken nesnenin bir özelliğine bir değer atamadan önce bu nesneyi oluşturmak. Kodumuzu şimdi tekrar yazıyoruz.

const customer = {};
customer.name = 'Ahmet Yavuz';
// Hata oluşmaz

Cannot set properties of Undefined Hatası ve Çözümü

Evet nesneyi tanımlarken oluşturduğumuz zaman bu hata mesajı ortadan kalkacaktır. Bu sorun genellikle farklı bir yerden bir veri alırken oluşuyor. Mesela müşteri ismini veritabanından almak istedik ama veri yok veya gelmedi. Bu durumda nesne oluşmayacak ve hata oluşacaktır. Bunu gelen veriyi denetleyerek aşabiliriz.

// Bu satırı verinin veritabanından gediğini
// varsayarak custumer nesnesini undefined yapıyoruz.

const customerData = undefined;

// Şimdi eğer müşteri bilgileri gelmedi ise
// boş bir nesne oluşturalım

const customer = customerData || {};

customer.name = 'Ahmet Yavuz';

// Artık hata ile karşılaşmayacağız

console.log(customer.name);
// Konsola Ahmet Yavuz yazdırır.

Yine aynı hatayı bir dizi oluşturulmadan kullanılırsa da alırız.

const sales = undefined;

sales[0] = 'Big Sales';

// Uncaught TypeError: Cannot set properties of undefined (setting '0')

// Hatası oluşur

Yine daha önce nesler üzerindeki çözüm yöntemini kullanarak ya diziyi daha önce oluşturacağız yada eğer diziyi başka yerden alıyorsak onun alınıp alınmadığını denetleyerek ona göre işlem yaparak hata oluşmasını önleyeceğiz.

Konu hakkında aklınızda takılan birşey varsa veya sormak ve eklemek istedikleriniz bulunuyorsa lütfen bize yorum yazın.

Yorum bırakın

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