"Uncaught TypeError" Nedir?
Bu hata genellikle şu durumlarda karşımıza çıkar:
- Bir değişken üzerinde geçerli olmayan bir işlem yapmaya çalışmak: Bir sayı üzerinde fonksiyon çağırmaya çalışmak, bir diziyi bir string gibi kullanmak…
- Undefined veya null ile işlem yapmaya çalışmak: Kodun bir noktasında beklenen değer gelmemişse, bu tür hatalar oluşur.
- Yanlış tipteki verileri kullanmak: Fonksiyona geçerli bir nesne yerine yanlış bir değer geçirmek.
Hata Mesajı Ne Anlama Geliyor?
Örnek olarak:
```javascript
let user = null;
user.name = "Ali"; // Uncaught TypeError: Cannot set property 'name' of null
```
Bu hatayı aldınız çünkü `user` değişkeni `null` olduğu için ona bir özellik eklemeye çalışmak geçerli bir işlem değil.
Hata Nasıl Çözülür?
# 1. Nesnenizin Değerini Kontrol Edin
Nesne ya da değişkenin doğru şekilde tanımlandığından ve `null` ya da `undefined` olmadığından emin olun. Eğer nesne üzerinde işlem yapıyorsanız, ona güvenmeden önce bir kontrol eklemelisiniz.
let user = getUser(); // getUser() bir değer döndürmeli
if (user) {
user.name = "Ali"; // Burada işlem güvenli
} else {
console.log("User is not defined!");
}
```
# 2. Doğru Tipte Değerler Kullanın
Fonksiyonlarınıza doğru tipte parametreler gönderdiğinizden emin olun. Bir sayı yerine bir string göndermek, ya da bir array yerine bir obje kullanmak hataya yol açabilir.
let sum = 0;
let values = [1, 2, 3];
values.forEach(function(value) {
sum += value;
});
```
Burada `values` dizisiyle çalışırken her şey doğru çünkü her öğe sayısal bir değer. Eğer yanlış tipte bir öğe olsaydı, hata alabilirdik.
# 3. Fonksiyonların Tanımlandığından Emin Olun
Bir fonksiyonu çağırmadan önce o fonksiyonun gerçekten var olup olmadığını kontrol edin. Özellikle dinamik olarak fonksiyonları atıyorsanız, bir değişken üzerinden fonksiyon çağrısı yapmadan önce kontrol etmelisiniz.
let myFunction;
if (typeof myFunction === "function") {
myFunction(); // Bu güvenli
} else {
console.log("Function is not defined!");
}
```
# 4. Hata Ayıklama Yapın
Kodunuzu dikkatlice inceleyin ve adım adım takip ederek hangi satırda bu hatanın ortaya çıktığını bulun. JavaScript'in hata ayıklama araçlarını kullanarak hatayı hızlıca çözebilirsiniz.
console.log(user);
console.log(user.name); // Hata burada, 'user' null olduğu için bu satır çalışmaz.
```
"Uncaught TypeError" İçin İpuçları
- Veri Türü Kontrolleri: Fonksiyonlarınızı yazarken her zaman parametrelerin doğru türde olup olmadığını kontrol edin. `typeof` operatörünü kullanarak verilerin türünü kontrol edebilirsiniz.
- Modern JavaScript Özelliklerinden Yararlanın: ES6 ve sonrasında gelen `let`, `const`, ve `arrow functions` gibi özellikler hataları daha az yapmanızı sağlar.