== karşılaştırma operatörü tür dönüşümü yapar. Bu da beklenmedik sonuçlara neden olabilir.
Örneğin:
Kod: Tümünü seç
console.log(0 == '0'); // true
console.log(0 === '0'); // falseÇözüm: Her zaman katı karşılaştırma yapan === ve !== kullanın.
2. var Kullanmak
var ile tanımlanan değişkenler fonksiyon veya global scope’a aittir. Bu da istenmeyen çakışmalara neden olabilir.
Örnek:
Kod: Tümünü seç
for (var i = 0; i < 5; i++) {}
console.log(i); // 5Çözüm: Her zaman let veya const kullanın.
Kod: Tümünü seç
for (let i = 0; i < 5; i++) {}
console.log(i); // ReferenceErrorsetTimeout, fetch veya async fonksiyonlarıyla çalışırken asenkron yapıyı göz ardı etmek çok yaygın bir hatadır.
Yanlış:
Kod: Tümünü seç
let data;
fetch('api/url')
.then(response => response.json());
console.log(data); // undefinedDoğru:
Kod: Tümünü seç
async function getData() {
const response = await fetch('api/url');
const data = await response.json();
console.log(data);
}
getData();this bağlamı fonksiyona bağlıdır ve çağrıldığı yere göre değişir.
Yanlış:
Kod: Tümünü seç
const obj = {
name: "Test",
getName: function() {
setTimeout(function() {
console.log(this.name); // undefined
}, 1000);
}
};
obj.getName();Doğru:
Kod: Tümünü seç
const obj = {
name: "Test",
getName: function() {
setTimeout(() => {
console.log(this.name); // "Test"
}, 1000);
}
};null geliştirici tarafından atanır, undefined ise değer atanmamış bir değişkeni temsil eder.
Kontrol ederken bunu göz önünde bulundurun:
Kod: Tümünü seç
if (variable == null) {
// hem null hem undefined için çalışır
}Obje ve diziler referans tipindedir. Kopyalama yaparken doğrudan atama yapmak aynı referansı paylaşır.
Yanlış:
Kod: Tümünü seç
let a = { name: "Ali" };
let b = a;
b.name = "Veli";
console.log(a.name); // "Veli"Doğru:
Kod: Tümünü seç
let a = { name: "Ali" };
let b = { ...a };
b.name = "Veli";
console.log(a.name); // "Ali"Tüm değişkenleri globalde tanımlamak isim çakışmalarına yol açar.
Yanlış:
Kod: Tümünü seç
count = 0;Doğru:
Kod: Tümünü seç
let count = 0;Asenkron işlemlerde hata yönetimini göz ardı etmek yaygın bir hatadır.
Yanlış:
Kod: Tümünü seç
async function fetchData() {
const res = await fetch('url');
const data = await res.json();
}
Kod: Tümünü seç
async function fetchData() {
try {
const res = await fetch('url');
const data = await res.json();
} catch (e) {
console.error("Veri çekme hatası:", e);
}
}forEach bir değer döndürmez, ama genellikle map ile karıştırılır.
Yanlış:
Kod: Tümünü seç
const doubled = [1, 2, 3].forEach(x => x * 2);
console.log(doubled); // undefined
Kod: Tümünü seç
const doubled = [1, 2, 3].map(x => x * 2);
console.log(doubled); // [2, 4, 6]Tek tek DOM güncellemek performans sorunlarına neden olur.
Yanlış:
Kod: Tümünü seç
for (let i = 0; i < 1000; i++) {
document.body.innerHTML += "<div>Eleman</div>";
}Doğru:
Kod: Tümünü seç
let html = "";
for (let i = 0; i < 1000; i++) {
html += "<div>Eleman</div>";
}
document.body.innerHTML = html;