JavaScript - bu dinamik ma'lumotlarni yozishga ega til. Bu shuni anglatadiki, qiymatlar bir xil o'zgaruvchiga yozilishi mumkin har xil turlari, va o'zgaruvchining turi o'zgaradi. Bunday xatti-harakatlar ko'pincha o'zgaruvchilarning turli xatti-harakatlarini unutishga imkon beradi turli xil turlari, lekin bu xususiyatni hali ham eslab qolish kerak. Buni quyidagi misol bilan ko'rsatamiz.
console.log(sum(1, 2)); // 3 (bu yerda hammasi joyida) console.log(sum(1, "2")); // 12 (va bu erda unchalik emas)
Misoldan ko'rinib turibdiki, funktsiya so'm agar uning argumentlaridan kamida bittasi raqam bo'lmasa, o'zini noto'g'ri tutadi. Gap shundaki, raqamni satrga "qo'shish" paytida raqam satrga aylanadi va u ikkinchi operand bilan birlashtiriladi (yopishtiriladi).
Bunday asoratlarni oldini olish uchun siz skriptni bajarish paytida o'zgaruvchining turini bilib olishingiz va uning harakatini sozlashingiz yoki o'zgaruvchilar turlarini diqqat bilan kuzatib borishingiz mumkin.
operator turi
Bu unar operator operand sifatida mutlaqo istalgan qiymatni oladi va uning turini satr o'zgaruvchisida qaytaradi.
JavaScript quyidagi ma'lumotlar turlariga ega:
// 1.) ob'ekt console.log (typeof ( ) ); |
// ob'ekt var p = ( x: 1 , y: 3 );
console.log (p turi); // obyekt // 2.) funksiya funksiyasi sayHello() ( console.log ("Salom!" ); ) console.log (turi sayHello) ;// funktsiya // 3.) string console.log ("JavaScript" turi) ;
Cast
Dasturlashda tipni quyish deganda bir turdagi o'zgaruvchining qiymatini boshqa turdagi qiymatga aylantirish tushuniladi.
Ko'pincha bunday konvertatsiya dasturchining nazoratisiz sodir bo'ladi. Buni funksiya bilan misolda ko'rish mumkin so'm. Turning o'zgarishi asl turdagi o'zgaruvchi ustidagi operatsiya natijasi noaniq bo'lganda sodir bo'ladi. Masalan, songa satr qo‘shish natijasida nima bo‘lishini aniq aytish mumkin emas, lekin ikkita sonni qo‘shish amali yaqqol ko‘rinib turadi va bu holda raqamni qatorga qisqartirish mantiqan to‘g‘ri keladi.
Satrni raqamga aylantirish
Ba'zan dasturchining o'zi o'zgaruvchining turini unga ma'lum operatsiyalarni qo'llash orqali o'zgartirishi mumkin. Masalan, satrdagi amallarni oshirish yoki kamaytirish uni raqamga qisqartiradi.
var c = "raqam emas"; ++c; console.log (c turi); // NaN
Shuni ta'kidlash kerakki, satrni raqamga aylantirishning bu usuliga murojaat qilishning hojati yo'q, chunki uning o'qilmasligi va ravshan emas. JS da bu vazifa uchun o'rnatilgan funksiyalar mavjud parseInt Va parseFloat. Birinchi argument sifatida ular raqamga aylantirilishi kerak bo'lgan qatorni, ixtiyoriy ikkinchi argument sifatida esa birinchi argument sifatida o'tkazilgan qatorda raqam yozilgan sanoq tizimining asosini oladi. Agar ikkinchi argument ko'rsatilmagan bo'lsa, u holda satrda o'nlik sanoq sistemasidagi raqam mavjud deb taxmin qilinadi.
Funktsiya parseInt satrni butun songa va funksiyaga aylantirish uchun ishlatiladi parseFloat kasrga aylantirish uchun.
var a = parseInt("10" ) ; |
console.log ([ "a = " , a, "; typeof a:" , typeof a] .join ( " " ) );
// a = 10; typeof a: raqam var pi = parseInt("3.1415" );
console.log("pi = " + pi) ; // pi = 3 pi = parseFloat("3.1415" ); |
a = parseInt("010"); console.log("a = " + a); // a = 8 a = parseInt("0xAA"); console.log("a = " + a); // a = 170 a = parseFloat("1e-10"); console.log("a = " + a); // a = 1e-10 (1e-10 = 1 * 10 ^ -10 = 0,0000000001)
Funktsiyalarning ikkinchi parametri sifatida parseInt Va parseFloat Sanoq tizimining asosini belgilashingiz mumkin.
a = parseInt("10" , 8 ); |
console.log("a = " + a) ;
// a = 8 a = parseInt("010" , 10 ); parseInt Va parseFloat console.log("a = " + a) ; // a = 10 a = parseInt("ff" , 16 );.
console.log("a = " + a) ; |
// a = 255
a = parseInt("10", 8); console.log("a = " + a); // a = 8 a = parseInt("010", 10); console.log("a = " + a); // a = 10 a = parseInt("ff", 16); console.log("a = " + a); // a = 255
Agar qiymat funktsiyaga tegishli satrda bo'lsa
birinchi parametr sifatida qabul qilinadi, raqamli harf emas, u holda bu funktsiyalarni bajarish natijasi qiymat bo'ladi NaN |
a = parseInt("raqam emas" );
console.log("a = " + a) ; // a = NaN a = parseFloat("raqam emas" ) ; console.log("a = " + a) ;
// a = NaN |
var p = (x: 2, y: 4), str; str = p.toString(); console.log (turi str); // string console.log(str); // str = .toString(); console.log (turi str); // string console.log(str); // 1,2,3
Raqamli konvertatsiya
Raqamga o'tkazish matematik amallarni bajarishda va turdagi quyma (==, !=) bilan taqqoslash operatsiyasini bajarishda va qiymat bilan sodir bo'ladi. yolg'on va bo'sh massiv 0 turdagi qiymatga aylantiriladi raqam.
var a = rost + rost + rost; // 1 + 1 + 1 console.log(a); // 3
Bo'sh bo'lmagan massiv, ob'ekt va funksiya arifmetik ifodalarda ishlatilganda satrga o'tkaziladi.
var arr = [1, 2, 3]; console.log(arr + 4); |
// 1,2,34 funktsiya sum(a, b) ( a + b; qaytaring; ) console.log (sum + 5 ) ;
// funksiya summasi(a, b)(a + b; qaytaring)5 parseInt, parseFloat Va // a = NaN a = parseFloat("raqam emas" ) ;.
var arr = ; console.log(arr + 4); // 1,2,34 funksiya summasi(a, b)(a + b; qaytish) console.log(sum + 5); // funksiya summasi(a, b)(a + b; qaytaring)5
Ko'rib turganingizdek, js-da yashirin turdagi konvertatsiya qilish har doim ham aniq emas, shuning uchun siz aniq turdagi konvertatsiya qilish uchun funktsiyalardan foydalanib, undan qochishingiz kerak, masalan,
Ana xolos. Har doimgidek, sizga omad!
JavaScript-da satrlarni raqamlarga aylantirish uchun ikkita o'rnatilgan funksiya mavjud: parseFloat() va parseInt().
parseFloat() argument sifatida raqamli turga aylantiriladigan satrni oladi va float raqamini qaytaradi. Raqam satr boshida ko'rsatilishi kerak. Agar raqamdan keyin qatorda boshqa belgilar bo'lsa, ular kesiladi. Raqamning kasr qismi nuqta bilan ajratilgan holda yozilishi kerak (vergul ajratuvchi sifatida qabul qilinmaydi). Agar parseFloat() satrni o'zgartira olmasa, u NaN ni qaytaradi.
parseInt(string[, radix]) funksiyasi birinchi argument sifatida satrni oladi, uni tahlil qiladi va butun sonni qaytaradi (turi butun son). Funktsiya manba qatoridagi raqam yozilgan sanoq tizimini tahlil qilishga harakat qiladi (masalan, o'nlik, sakkizlik yoki o'n oltilik - lekin nafaqat bular). Sanoq tizimini ikkinchi parametr radikali sifatida o'tkazish orqali ham aniq belgilashingiz mumkin. Radix parametri 2 dan 36 gacha bo'lgan istalgan raqamni olishi mumkin (10 dan yuqori tizimlarda A dan Z gacha ingliz alifbosining harflari ishlatiladi).
Funktsiya parseFloat() kabi 1.5e6 kabi raqamlarni qayta ishlamaydi.
parseInt() funksiyasi ishida yashiringan xatolarga duch kelmaslik uchun quyidagi misollarni o'qing.
ParseInt(""25"") // 25 parseInt(""-25"") // -25 parseInt(""45.12"") // 45 parseInt(""045"",10) // 45 parseInt( ""70"",8) // 56 (70 sakkiztalik o'nli sonda 56) parseInt(""070"") // 56 (MUHIM!!! nol birinchi navbatda funktsiyani satrni sakkizlik son sifatida tahlil qilishga olib keladi. ) parseInt(" "88"",8) // NaN (sakkizlik tizimda 8 raqami yo'q) parseInt(""a1"") // NaN (MUHIM!!! Standart funktsiya raqamni shunday ko'rsatmaydi. agar u bosh satrlarga qo'shilmagan bo'lsa, o'n oltilik 0x) parseInt(""a1"",16) // 161 (sanoq tizimi bu erda aniq ko'rsatilgan) parseInt(""0xa1"") // 161 (to'g'ri o'n oltilik raqam formati , ikkinchi parametrni ko'rsatish shart emas) parseInt( ""099"") // 0 (MUHIM!!! Raqam sakkizlik sifatida ko'rib chiqiladi, lekin yaroqsiz belgilar mavjud) parseInt(""0.5e6"") / / 0 (MUHIM!!! parseFloat kabi ishlamaydi) parseInt("" ZZ"",36) // 1295 parseInt(""-FF"") // NaN parseInt(""-FF"",16) / / -255
Agar siz ma'lumotlarni qayta ishlasangiz matn maydoni, foydalanuvchi kiritgan, har doim ikkinchi radix parametri bilan birga parseInt() dan foydalaning, bu sizning kodingizni kutilmagan natijalardan himoya qiladi.
The parseInt() funktsiya satr argumentini tahlil qiladi va belgilangan radiksning butun sonini qaytaradi (matematik raqamlar tizimidagi asos).
Ushbu interaktiv misol uchun manba GitHub omborida saqlanadi. Agar siz interaktiv misollar loyihasiga o'z hissangizni qo'shmoqchi bo'lsangiz, iltimos, https://github.com/mdn/interactive-examples klonlang va bizga tortish so'rovini yuboring.
Sintaksis
parseInt (string, radix)Parametrlar
string Tahlil qilinadigan qiymat. Agar bu argument satr bo'lmasa, u ToString abstrakt operatsiyasi yordamida bittaga aylantiriladi. Ushbu argumentdagi asosiy bo'shliq e'tiborga olinmaydi. radix Majburiy emas. 2 dan 36 gacha boʻlgan butun son, bu satrning radikalini (matematik sanoq sistemalaridagi asos) ifodalaydi. Ehtiyot bo'ling - bu shunday emasstandart 10!
Radix taqdim etilmaganda nima sodir bo'lishini batafsilroq tushuntiradi.
Qaytish qiymati
Berilgan satrdan ajratilgan butun son.
Agar radiks 11 dan kichik bo'lsa va birinchi bo'sh bo'lmagan belgini raqamga aylantirib bo'lmasa, NaN qaytariladi.
Tavsif
parseInt funktsiyasi o'zining birinchi argumentini satrga aylantiradi, bu qatorni tahlil qiladi, so'ngra butun son yoki NaN ni qaytaradi.
Agar NaN bo'lmasa, qaytarish qiymati belgilangan radixda raqam sifatida qabul qilingan birinchi argument bo'lgan butun son bo'ladi. (Masalan, 10 dan iborat radikal oʻnlik sondan, 8 ta sakkizlikdan, 16 ta oʻn oltilik sondan va hokazo.)
10 dan yuqori radikallar uchun ingliz alifbosidagi harflar 9 dan katta raqamlarni bildiradi. Masalan, o'n oltilik sonlar uchun (baza 16) A dan F gacha. Agar parseInt ko'rsatilgan radixda raqam bo'lmagan belgiga duch kelsa, u unga va barcha keyingi belgilarga e'tibor bermaydi va shu nuqtaga qadar tahlil qilingan butun son qiymatini qaytaradi. parseInt raqamlarni butun qiymatlarga qisqartiradi. Etakchi va orqadagi bo'shliqlarga ruxsat beriladi. Chunki ba'zi raqamlar o'z satrlarini ko'rsatishda e belgisidan foydalanadi (masalan. radix Majburiy emas. 2 dan 36 gacha boʻlgan butun son, bu satrning radikalini (matematik sanoq sistemalaridagi asos) ifodalaydi. Ehtiyot bo'ling - bu shunday 6.022e23
6.022 × 10 23 uchun), raqamlarni kesish uchun parseInt-dan foydalanish juda katta yoki juda kichik raqamlarda ishlatilganda kutilmagan natijalar beradi. parseInt kerak
Math.floor() o'rniga ishlatiladi.
- parseInt aniq ikkita belgini tushunadi: + ijobiy uchun va - salbiy uchun (ECMAScript 1dan beri). Bu bo'sh joy olib tashlanganidan keyin tahlil qilishning dastlabki bosqichi sifatida amalga oshiriladi. Hech qanday belgilar topilmasa, algoritm quyidagi bosqichga o'tadi; aks holda, u belgini olib tashlaydi va satrning qolgan qismida raqamni ajratishni ishga tushiradi.
- Agar radix aniqlanmagan , 0 yoki aniqlanmagan bo'lsa, JavaScript quyidagilarni qabul qiladi: Agar kirish satri "0x" yoki "0X" (nol, keyin kichik yoki katta X) bilan boshlansa, radix 16 deb qabul qilinadi va satrning qolgan qismi o'n oltilik raqam sifatida tahlil qilinadi. foydalanish mumkin, lekin hali hamma brauzerlar buni qo'llab-quvvatlamaydi. Shu sababli, parseInt dan foydalanganda har doim radisni belgilang.
- Agar kirish satri har qanday boshqa qiymat bilan boshlansa, radikal 10 (o'nlik) ga teng.
Agar birinchi belgi raqamga aylantirilmasa, agar radikal 10 dan katta bo'lmasa, parseInt NaN ni qaytaradi.
Arifmetik maqsadlar uchun NaN qiymati hech qanday radiksdagi raqam emas. parseInt natijasi NaN ekanligini aniqlash uchun isNaN funksiyasini chaqirishingiz mumkin. Agar NaN arifmetik amallarga o'tkazilsa, operatsiya natijasi ham NaN bo'ladi.
Raqamni ma'lum bir radiksdagi satr harfiga aylantirish uchun thatNumber .toString(radix) dan foydalaning.
Misollar
parseInt dan foydalanish
Quyidagi misollarning barchasi 15 ni qaytaradi:
ParseInt("0xF", 16) parseInt("F", 16) parseInt("17", 8) parseInt(021, 8) parseInt("015", 10) // lekin `parseInt(015, 10)` bo'ladi return 13 parseInt(15.99, 10) parseInt("15,123", 10) parseInt("FXX123", 16) parseInt("1111", 2) parseInt("15 * 3", 10) parseInt("15e2", 10) parseInt("15px", 10) parseInt("12", 13)
Quyidagi misollarning barchasi NaN ni qaytaradi:
ParseInt("Salom", 8) // Hech qanday raqam emas parseInt("546", 2) // Binar radix uchun 0 yoki 1 dan boshqa raqamlar yaroqsiz
Quyidagi misollarning barchasi -15 ni qaytaradi:
ParseInt("-F", 16) parseInt("-0F", 16) parseInt("-0XF", 16) parseInt(-15.1, 10) parseInt("-17", 8) parseInt("-15", 10) parseInt("-1111", 2) parseInt("-15e1", 10) parseInt("-12", 13)
Quyidagi misollarning barchasi 4 ni qaytaradi:
ParseInt(4.7, 10) parseInt(4.7 * 1e22, 10) // Juda katta son 4 ga aylanadi parseInt(0.00000000000434, 10) // Juda kichik raqam 4 ga aylanadi
Quyidagi misol 224 ni qaytaradi:
ParseInt("0e0", 16) parseInt("123_456") // 123
Radikssiz sakkizlik talqinlar
ECMAScript 3 tomonidan to'xtatilgan va ECMAScript 5 tomonidan taqiqlangan bo'lsa-da, ko'p ilovalar bosh 0 dan boshlanadigan raqamli qatorni sakkizlik sifatida izohlaydi. Quyidagi natija sakkizlik yoki o'nlik natijaga ega bo'lishi mumkin. Har doim radiksni belgilang bu ishonchsiz xatti-harakatlardan qochish uchun.
ParseInt("0e0") // 0 parseInt("08") // 0, chunki "8" sakkizlik raqam emas.
ECMAScript 5 sakkizlik talqinni olib tashlaydi
parseInt funksiyasining ECMAScript 5 spetsifikatsiyasi endi ilovalarga 0 belgidan boshlanadigan satrlarni sakkizlik qiymat sifatida ko‘rib chiqishga ruxsat bermaydi. ECMAScript 5 quyidagilarni ta'kidlaydi:
parseInt funksiyasi belgilangan radiksga muvofiq satr argumenti mazmunini talqin qilish orqali belgilangan butun son qiymatini hosil qiladi. Satrdagi bosh bo'sh joy e'tiborga olinmaydi. Agar radix aniqlanmagan bo'lsa yoki 0 bo'lsa, raqam 0x yoki 0X belgilar juftligi bilan boshlangan hollar bundan mustasno, u 10 deb qabul qilinadi, bu holda radikal 16 ga teng deb qabul qilinadi.
Bu ECMAScript 3 dan farq qiladi, bu tavsiya etilmaydi, ammo sakkizlik talqinga ruxsat beriladi.
Ko'pgina ilovalar 2013 yildan boshlab bu xatti-harakatni qabul qilmagan va eski brauzerlar qo'llab-quvvatlanishi kerakligi sababli, har doim radikalni belgilang.
Qattiqroq tahlil qilish funktsiyasi
Ba'zan butun sonlarni tahlil qilishning qattiqroq usuliga ega bo'lish foydalidir.
Oddiy iboralar yordam berishi mumkin:
Funktsiya filterInt(qiymat) (agar (/^[-+]?(\d+|Infinity)$/.test(qiymat)) ( Qaytish Raqam(qiymat) ) else ( Qaytish NaN ) ) console.log(filterInt( "421 ")) // 421 console.log(filterInt("-421")) // -421 console.log(filterInt("+421")) // 421 console.log(filterInt("Infinity")) // Infinity console.log(filterInt("421e+0")) // NaN console.log(filterInt("421hop")) // NaN console.log(filterInt("hop1.61803398875")) // NaN konsoli .log (filterInt("1.61803398875")) // NaN
Texnik xususiyatlari
Spetsifikatsiya | Holat | Izoh |
---|---|---|
ECMAScript 1-nashr (ECMA-262) | Standart | Dastlabki ta'rif. |
ECMAScript 5.1 (ECMA-262) |
Standart | |
ECMAScript 2015 (6-nashr, ECMA-262) Ushbu spetsifikatsiyadagi "parseInt" ta'rifi. |
Standart | |
ECMAScript oxirgi loyihasi (ECMA-262) Ushbu spetsifikatsiyadagi "parseInt" ta'rifi. |
Qoralama |
Brauzer mosligi
Ushbu sahifadagi muvofiqlik jadvali tuzilgan ma'lumotlardan yaratilgan. Agar siz maʼlumotlarga oʻz hissangizni qoʻshmoqchi boʻlsangiz, iltimos, https://github.com/mdn/browser-compat-data manziliga tashrif buyuring va bizga tortishish soʻrovini yuboring.
GitHub-da muvofiqlik ma'lumotlarini yangilang
Ish stoli | Mobil | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Chet | Firefox | Internet Explorer | Opera | Safari | Android veb-ko'rinishi | Android uchun Chrome | Android uchun Firefox | Android uchun Opera | IOS uchun Safari | Samsung Internet | Node.js | |
parseInt | Chrome toʻliq qoʻllab-quvvatlash 1 | Edge to'liq qo'llab-quvvatlash 12 | Firefox to'liq qo'llab-quvvatlash 1 | IE To'liq qo'llab-quvvatlash 3 | Opera to'liq qo'llab-quvvatlash Ha | Safari to'liq qo'llab-quvvatlash Ha | WebView Android to'liq qo'llab-quvvatlash 1 | Chrome Android to'liq qo'llab-quvvatlash 18 | Firefox Android to'liq qo'llab-quvvatlash 4 | Safari iOS to'liq qo'llab-quvvatlash Ha | Samsung Internet Android To'liq qo'llab-quvvatlash 1.0 | nodejs To'liq qo'llab-quvvatlash Ha | |
Boshlovchi nol qatorlar sakkizlik emas, o'nlikdir | Chrome toʻliq qoʻllab-quvvatlash 23 | Edge to'liq qo'llab-quvvatlash 12 | Firefox to'liq qo'llab-quvvatlash 21 | IE To'liq qo'llab-quvvatlash 9 | Opera to'liq qo'llab-quvvatlash Ha | Safari to'liq qo'llab-quvvatlash 6 | WebView Android to'liq qo'llab-quvvatlash 4.4 | Chrome Android to'liq qo'llab-quvvatlash 25 | Firefox Android to'liq qo'llab-quvvatlash 21 | Opera Android To'liq qo'llab-quvvatlash Ha | Safari iOS to'liq qo'llab-quvvatlash 6 | Samsung Internet Android To'liq qo'llab-quvvatlash Ha | nodejs To'liq qo'llab-quvvatlash Ha |
Salom aziz o'quvchilar. Bugun men qanday qilib aylantirilishini yozaman javascript raqamga qator. Bu raqam funktsiyasi yordamida amalga oshiriladi, endi men uning ishlatilishini misol bilan ko'rsataman.
Shuningdek, ushbu maqolaning video versiyasini ko'rishni taklif qilaman:
Ma'lumotlar turlari haqida bir oz
Ma'lumki, javascriptda raqamli va qatorli ma'lumotlar turlari mavjud. Keling, raqamlarni saqlaydigan ikkita o'zgaruvchini yaratishga harakat qilaylik va natijani ekranda ko'rsatamiz.
Var a = 5; var b = 12; hujjat.yozish(a + b);
Natija qanday bo'ladi? 17, bu brauzer bizga ko'rsatgan narsadir. Shunday qilib, bu raqamli ma'lumotlar, shuning uchun brauzer uni muvaffaqiyatli qo'shdi. Keling, yana ikkita o'zgaruvchini yaratamiz, ularda biz bir xil qiymatlarni qo'yamiz, lekin tirnoq ichida. Eslatib o'taman, javascriptdagi barcha satrlar tirnoq ichida yozilgan.
Var c = "5"; var d = "12"; document.write("
" + c + d);
Endi brauzer bizning ma'lumotlarimizni satr deb hisoblaydi va agar biz ularni qo'shsak, ikkita qator qo'shiladi va biz 512 ni olamiz, agar raqamlar qo'shilsa, bu to'g'ri natija emas, lekin ikkita qatorni birlashtirsak to'g'ri bo'ladi.
Javascriptda satrni raqamga qanday aylantirish mumkin?
Bu erda hamma narsa oddiy, keling, keyingi ikkita o'zgaruvchini yaratamiz, unda biz c va d o'zgaruvchilari tomonidan ko'rsatilgan qiymatni yozamiz, lekin ularni Number usuli orqali o'tkazamiz:
Var e = Raqam(c); var f = Number(d); hujjat.write(e + f);
Agar siz hozir ushbu qo'shish natijasini ekranda ko'rsatishga harakat qilsangiz, u 17 ni ko'rsatadi. Buning sababi, bizning usulimiz muvaffaqiyatli ishladi va satrni raqamga aylantirdi. Shuni ta'kidlashni istardimki, agar siz buni shunday yozsangiz:
Document.write("
" + e + f);
Keyin ekranda 512 ko'rsatiladi, chunki satrlar va raqamlarni qo'shganda DOIM natija satrga aylantiriladi. Agar siz chiziqli tanaffus qo'shmoqchi bo'lsangiz va hali ham to'g'ri natijani saqlamoqchi bo'lsangiz, hamma narsani ikkita yoki bitta qatorga yozishingiz mumkin:
Document.write("
" + (e + f));
Agar siz raqamlarni qavs ichiga qo'ysangiz, ular satrlarga aylantirilmaydi va o'z xususiyatlarini muvaffaqiyatli saqlab qoladi. Bu mening bugungi qisqa maqolam. Umid qilamanki, JavaScript siz uchun biroz aniqroq bo'ldi.
Tanlov