⊗jsPmBsATC 43 of 505 menu

Ma'lumot turlarining avtomatik o'zgartirilishi

Siz allaqachon bilasizki, JavaScriptda satrlar tirnoq ichiga olinishi kerak. Satrning barcha belgilari raqamlardan iborat bo'lishi mumkin:

let a = '123';

Bunda a o'zgaruvchisi ham satr hisoblanadi, lekin bir nuans bilan.

Nuans shundan iboratki: agar raqamlardan iborat satr ustida qandaydir matematik amal bajarilsa - bu amal xuddi bizda haqiqatan ham raqamlar bordek, satrlar emasdek bajariladi:

alert('2' * '3'); // 6 ni chiqaradi

Bunda JavaScript biz satrlar uchun noqonuniy, lekin raqamlar uchun qonuniy bo'lgan amalni bajarishga harakat qilayotganimizni ko'radi.

Shuningdek, u bizning satrlarimiz aslida tirnoq ichidagi raqamlar ekanligini ko'radi. Shuning uchun JavaScript ushbu satrlarni avtomatik ravishda raqamlarga o'zgartiradi va ular ustida tegishli matematik amalni bajaradi.

Bu faqat satrlarimiz faqat raqamlardan iborat bo'lsa ishlaydi. Agar u yerda kamida bitta harf bo'lsa - JavaScript amalni noto'g'ri deb hisoblaydi va uning natijasi NaN qiymati bo'ladi:

alert('2' * '3s'); // NaN ni chiqaradi

Bundan tashqari, avtomatik o'zgartirish amal matematik jihatdan to'g'ri bo'lsa, lekin satrlar uchun noqonuniy bo'lsa ham sodir bo'ladi.

Masalan, satrlarni (ammo raqamlarni mumkin) ko'paytirish, bo'lish, ayirish mumkin emas, shuning uchun barcha bunday amallarda raqamli satrlarning raqamlarga avtomatik o'zgartirilishi sodir bo'ladi.

Biroq, satrlar, xuddi raqamlar kabi, + operatori yordamida qo'shiladi. Bu shuni anglatadiki, qo'shish amalida avtomatik o'zgartirish bo'lmaydi:

let a = '1' + '2'; alert(a); // '12' ni chiqaradi - satrlar qo'shildi

Agar qo'shiluvchilardan biri raqam, ikkinchisi - satr bo'lsa, har doim satr g'alaba qozonadi:

let a = 1 + '2'; alert(a); // '12' ni chiqaradi

Bunday hollarda JavaScript, aksincha, avtomatik ravishda raqamlarni satrlarga o'zgartiradi va satrlarni qo'shish amalini bajaradi.

Biroq, qo'shiluvchilar ikkitadan ko'p bo'lsa, nuanslar mavjud: bunda ma'lum turga o'zgartirish amallarning bajarilish tartibiga bog'liq.

Quyidagi misolda avval 2 va 3 raqamlar sifatida qo'shiladi, so'ngra natija '1' satriga '5' satri sifatida qo'shiladi, bu esa oxir-oqibat '15' satrini beradi:

let a = '1' + (2 + 3); alert(a); // '15' ni chiqaradi

Agar qavslar olib tashlansa, hamma narsa chapdan o'ngga qo'shiladi. Ya'ni avval '1' satriga 2 raqami qo'shiladi va natijada '12' satri hosil bo'ladi. Keyin bu satrga 3 raqami qo'shiladi va natijada '123' satri hosil bo'ladi:

let a = '1' + 2 + 3; alert(a); // '123' ni chiqaradi

Quyidagi misolda esa 2 va 3 raqamlari boshida yozilgan, shuning uchun avval ular raqamlar sifatida qo'shiladi, natijada 5 raqami hosil bo'ladi, so'ngra bu raqamga '1' satri qo'shiladi, natijada '51' satri hosil bo'ladi:

let a = 2 + 3 + '1'; alert(a); // '51' ni chiqaradi

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5' + '2'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5' + 2; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = 5 + '2'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = 5 + 2; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5' * '2'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5' - '2'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5' / '2'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5' % '2'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5s' * '2'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5s' + '2'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = (-'5') + (-'2'); alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5' * 1 + '2' * 1; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '5' * '1' + '2' * '1'; alert(a);

Kodni ishlamasdan, ekranga nima chiqishini aniqlang:

let a = '' + 3 + 1; alert(a);
Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish