JavaScript Yashirin Xatolar (Silent Errors)
Yashirin xatolar
JavaScript jimgina muvaffaqiyatsiz bo'lishi mumkin. Yashirin xato dasturingizni to'xtatmaydi — bajarish davom etadi.
Yashirin xatolar sababi tarixiy: JavaScript-ning birinchi versiyasida catch...try istisnolari yo'q edi.
Eslatma
Yashirin xatolar — bu istisnolar tashlamaydigan yoki bajarishni to'xtatmaydigan, lekin mantiqiy xatolar, kutilmagan xatti-harakatlar yoki osongina o'tkazib yuborish mumkin bo'lgan nosozliklarni keltirib chiqaradigan muammolardir.
Quyida keng tarqalgan yashirin xatolarning ba'zi misollari:
Nolga bo'lish
let x = 1 / 0; // Infinity — xato yo'q, dastur davom etadiTayinlash, taqqoslash emas
let result = "Not Active.";
let isActive = false;
// ❌ Tayinlash, taqqoslash emas
if (isActive = true) {
let result = "Active!";
}Tushuntirish: (isActive = true) ifodasi isActive ga true tayinlaydi, tenglikni (isActive == true) bilan tekshirish o'rniga. Keyingi qator jimgina ishlaydi va "Active!" chop etadi, garchi isActive aslida false bo'lsa ham.
NaN — raqam bo'lmagan natija
Ko'pgina muvaffaqiyatsiz raqamli operatsiyalar NaN hosil qiladi (istisno emas). JavaScript buzilmaydi — u jimgina NaN beradi va davom etadi.
const result = parseInt("abc"); // NaN — xato yo'q, faqat noto'g'ri ma'lumotMavjud bo'lmagan xususiyat
Mavjud bo'lmagan xususiyatga kirish jimgina undefined qaytaradi:
const user = {};
let result = user.name; // undefined — xato yo'qTur o'zgartirish (Type Coercion)
JavaScript har bir operator uchun turlarni turlicha o'zgartiradi. Tur o'sgartirish xatolarni yashiradi — dastur davom etadi, lekin mantiq noto'g'ri:
let result1 = ('5' + '2'); // "52" — satr birlashtirish
let result2 = ('5' - '2'); // 3 — raqamli ayirish