JS tiplarni avtomatik o‘zgartirish

ULASHISH

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!