Skip to content

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

js
let x = 1 / 0;  // Infinity — xato yo'q, dastur davom etadi

Tayinlash, taqqoslash emas

js
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.

js
const result = parseInt("abc");  // NaN — xato yo'q, faqat noto'g'ri ma'lumot

Mavjud bo'lmagan xususiyat

Mavjud bo'lmagan xususiyatga kirish jimgina undefined qaytaradi:

js
const user = {};
let result = user.name;  // undefined — xato yo'q

Tur 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:

js
let result1 = ('5' + '2');  // "52" — satr birlashtirish
let result2 = ('5' - '2');  // 3 — raqamli ayirish