JS jim xatolar

ULASHISH

Jim xatolar

JavaScript xatoni sezdirmasdan ishlamay qolishi mumkin.

Ovozsiz xato dasturingizni to‘xtata olmaydi. Ijro davom etadi.

Jim xatolarning sababi tarixiy:

JavaScript-ning birinchi versiyasida catch yo‘q edi ... istisnolarni sinab ko‘ring.

Ovozsiz xatolar - bu istisnolarni keltirib chiqarmaydigan yoki bajarishni to‘xtatmaydigan, lekin baribir mantiqiy xatolar, kutilmagan xatti-harakatlar yoki o‘tkazib yuborish oson bo‘lgan nosozliklarni keltirib chiqaradigan muammolar.

Quyida sinash uchun misollar bilan umumiy jim xatolarning ba’zi misollari keltirilgan:

Misol

Ovozsiz xatolar dasturingizni to‘xtata olmaydi.

let x = 1 / 0;
O‘zingiz sinab ko‘ring »

Misol

Taqqoslash emas, qiymat berish

let result = "Not Active.";
let isActive = false;

// ❌ Assignment, not comparison
if (isActive = true) {
  let result = "Active!";
}
O‘zingiz sinab ko‘ring »

Tushuntirish

Bajarish if ifodasiga yetganda, shartli blok bajarilmasligini kutishingiz mumkin, chunki isActive noto‘g‘ri.

Biroq, baholashda (isActive = true) kodi o‘rnatiladi (isActive == true) bilan tenglikni tekshirish o‘rniga isActive to true .

Bu (true) if shartining ham qiymati bo‘ladi, shuning uchun blok bajariladi.

Yuqoridagi xato JavaScript aniqlay oladigan xato emas (u ataylab yozilgan bo‘lishi mumkin).

Bu dasturchining xatosi.

Misol

Muvaffaqiyatsiz tugagan ko‘plab sonli amallar NaN hosil qiladi (istisno emas).

JavaScript buzilmaydi. U sizga jimgina NaN beradi va davom etadi.

// NaN - no error, just wrong data
const result = parseInt("abc");
O‘zingiz sinab ko‘ring »

Misol

Mavjud bo‘lmagan xususiyatga murojaat qilish shunchaki sezdirmasdan undefined qaytaradi.

const user = {};
let result = user.name;
O‘zingiz sinab ko‘ring »


Tiplarni avtomatik o‘zgartirish (type coercion)

Tiplarni majburiy o‘zgartirish (type coercion) — qiymatlarning bir ma’lumot tipidan boshqasiga avtomatik (yashirin) o‘zgartirilishi.

JavaScript zaif terilganligi sababli, turlar mos kelmasa, u xato qilmaydi; faqat ularni majburlashga harakat qiladi.

JavaScript har bir operator uchun turlarni turlicha majburlaydi, shuning uchun yozish majburlash xatolarni yashirishi mumkin.

Misol

let result1 = ('5' + '2'); // = 52
let result2 = ('5' - '2'); // = 3
O‘zingiz sinab ko‘ring »

Stringga aylantirish (+)

Agar + amalining biror qismi string bo‘lsa, JavaScript hamma narsani stringga aylantiradi:

let x = "5" + 2 // x = "52"

Songa o‘zgartirish

Boshqa arifmetik operatorlar (-, *, /, %) va unar plyus (+x) qiymatlarni raqamlarga majburlaydi.

let x = "5" - 2 // x = 3

Qat’iy bo‘lmagan tenglik (==)

Bu operator taqqoslashdan oldin "umumiy tip"ni topish uchun tiplarni majburiy o‘zgartiradi (coercion).

let x = (5 == "5") // x = true

Xatolarning oldini olish bo‘yicha amaliyotlar

=== dan foydalaning (qat’iy tenglik) Bu g‘alati natijalarni oldini olish uchun majburlashsiz qiymat va turni tekshiradi.

Aniq bo‘ling Avtomatik xatti-harakatlarga tayanish o‘rniga, niyatingizni aniq qilish uchun MDN tomonidan tavsiya etilgan o‘zgartirish usullaridan foydalaning, masalan Number() yoki String().

NaN ga e’tibor bering Agar stringni "abc" - 1 kabi haqiqiy raqamga aylantirib bo‘lmasa, natija NaN (raqam emas).



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!