JS jim xatolar
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.
Quyida sinash uchun misollar bilan umumiy jim xatolarning ba’zi misollari keltirilgan:
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.
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).
Shuningdek qarang:
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
