JS tiplarni avtomatik o‘zgartirish
Tiplarni avtomatik o‘zgartirish (type coercion)
Majburlash turi - bu qiymatlarni bir turdagi ma’lumotlardan ikkinchisiga avtomatik ravishda o‘zgartirish.
Majburlash turi turli xil ma’lumotlar turlarida operatsiyani amalga oshirganingizda sodir bo‘ladi va JavaScript mexanizmi ularni bir-biriga "mos" qilishga harakat qiladi.
Misol
JavaScript har bir operator uchun turlarni turlicha majburlaydi, shuning uchun yozish majburlash xatolarni yashirishi mumkin.
Dastur majburlash qoidalariga muvofiq davom etadi, ammo ular dasturchi erishmoqchi bo‘lgan narsadan farq qilishi mumkin.
let result1 = ('5' + '2'); // = 52
let result2 = ('5' - '2'); // = 3
O‘zingiz sinab ko‘ring »
Tipni majburiy o‘zgartirish (coercion) yashirin bo‘ladi (dvigatel tomonidan avtomatik bajariladi), tipni o‘zgartirish (type conversion) esa oshkora bo‘ladi (Number() yoki String() kabi funksiyalardan qo‘lda foydalanasiz).
JavaScript zaif terilganligi sababli, turlar mos kelmasa, u xato qilmaydi; faqat ularni majburlashga harakat qiladi.
Stringga aylantirish (+)
Agar + amalining biror qismi string bo‘lsa, JavaScript hamma narsani stringlarga aylantiradi va ularni birlashtiradi.
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
Boolean’ga o‘zgartirish
if operatorlari kabi mantiqiy kontekstlarda yoki ikkilangan NOT operatori (!!) yordamida qiymatlar mantiqiy (boolean) qiymatlarga majburan o‘zgartiriladi.
Falsy qiymatlar: 0, "", null, undefined, NaN va false.
Truthy qiymatlar: qolgan hamma narsa (jumladan, bo‘sh obyektlar {} va massivlar []).
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
Xatolardan qochish bo‘yicha eng yaxshi 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!
