JavaScript da qiymat har doim maâlum bir turga tegishli. Masalan, string yoki raqam.
JavaScript da sakkizta asosiy maâlumot turi mavjud. Bu yerda biz ularni umumiy koârib chiqamiz va keyingi boblarda har biri haqida batafsil gaplashamiz.
Oâzgaruvchiga istalgan turni joylashtirishimiz mumkin. Masalan, oâzgaruvchi bir lahzada string boâlishi, keyin esa raqam saqlashi mumkin:
// xato yo'q
let message = "hello";
message = 123456;
JavaScript kabi bunday imkoniyatlarni beruvchi dasturlash tillari âdinamik tiplanganâ deb ataladi, yaâni maâlumot turlari mavjud, ammo oâzgaruvchilar ularning hech biriga bogâlanmagan.
Number (raqam)
let n = 123;
n = 12.345;
Number turi butun va oânlik sonlarni ifodalaydi.
Sonlar uchun koâplab amallar mavjud, masalan koâpaytirish *, boâlish /, qoâshish +, ayirish - va hokazo.
Oddiy sonlardan tashqari, ushbu maâlumot turiga tegishli âmaxsus raqamli qiymatlarâ ham mavjud: Infinity, -Infinity va NaN.
-
Infinitymatematik Cheksizlik â ni ifodalaydi. Bu har qanday sondan kattaroq boâlgan maxsus qiymat.Biz uni nolga boâlish natijasida olishimiz mumkin:
alert( 1 / 0 ); // InfinityYoki shunchaki toâgâridan-toâgâri murojaat qilish:
alert( Infinity ); // Infinity -
NaNhisoblash xatosini ifodalaydi. Bu notoâgâri yoki aniqlanmagan matematik amalning natijasi, masalan:alert( "not a number" / 2 ); // NaN, bunday bo'lish xatoNaNyopishqoq.NaNustidagi har qanday keyingi matematik amalNaNni qaytaradi:alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN alert( "not a number" / 2 - 1 ); // NaNDemak, agar matematik ifodaning biror joyida
NaNboâlsa, u butun natijaga tarqaladi (bunga faqat bitta istisno bor:NaN ** 0bu1).
JavaScript da matematik amallar âxavfsizâ. Biz hamma narsani qilishimiz mumkin: nolga boâlish, raqamli boâlmagan stringlarni raqam sifatida qarash va hokazo.
Skript hech qachon fatal xato bilan toâxtamaydi (âoâlmaydiâ). Eng yomoni, natija sifatida NaN olamiz.
Maxsus raqamli qiymatlar rasmiy ravishda ânumberâ turiga tegishli. Albatta ular bu soâzning oddiy maânosida raqam emas.
Raqamlar bilan ishlash haqida koâproq maâlumotni Raqamlar bobida koâramiz.
BigInt
JavaScript da ânumberâ turi (253-1) dan kattaroq (9007199254740991) yoki manfiylar uchun -(253-1) dan kichikroq butun qiymatlarni xavfsiz ifodalay olmaydi.
Aniq qilib aytganda, ânumberâ turi kattaroq butun sonlarni saqlashi mumkin (1.7976931348623157 * 10308 gacha), ammo xavfsiz butun sonlar diapazoni ±(253-1) dan tashqarida aniqlik xatosi boâladi, chunki barcha raqamlar belgilangan 64-bitli xotiraga sigâmaydi. Shuning uchun âtaxminiyâ qiymat saqlanishi mumkin.
Masalan, bu ikki raqam (xavfsiz diapazondan yuqorida) bir xil:
console.log(9007199254740991 + 1); // 9007199254740992
console.log(9007199254740991 + 2); // 9007199254740992
Demak, (253-1) dan kattaroq barcha toq butun sonlar ânumberâ turida umuman saqlanishi mumkin emas.
Koâpgina maqsadlar uchun ±(253-1) diapazoni yetarli, ammo baâzida bizga haqiqatan ham katta butun sonlarning toâliq diapazoni kerak, masalan kriptografiya yoki mikrosoniya aniqligidagi vaqt belgilari uchun.
BigInt turi yaqinda tilga ixtiyoriy uzunlikdagi butun sonlarni ifodalash uchun qoâshildi.
BigInt qiymati butun sonning oxiriga n qoâshish orqali yaratiladi:
// oxiridagi "n" bu BigInt ekanligini anglatadi
const bigInt = 1234567890123456789012345678901234567890n;
BigInt sonlari kamdan-kam kerak boâlganligi sababli, biz ularni bu yerda koârib chiqmaymiz, balki ularga alohida bob BigInt ajratdik. Bunday katta sonlar kerak boâlganda uni oâqing.
String (satr)
JavaScript da string qoâshtirnoqlar bilan oâralgan boâlishi kerak.
let str = "Hello";
let str2 = 'Bitta qo'shtirnoq ham yaxshi';
let phrase = `boshqa ${str} ni kiritish mumkin`;
JavaScript da 3 xil qoâshtirnoq mavjud.
- Qoâsh qoâshtirnoq:
"Hello". - Bitta qoâshtirnoq:
'Hello'. - Teskari qoâshtirnoq:
`Hello`.
Qoâsh va bitta qoâshtirnoqlar âoddiyâ qoâshtirnoqlardir. JavaScript da ular orasida amaliy farq yoâq.
Teskari qoâshtirnoqlar âkengaytirilgan funksionallikâ qoâshtirnoqlaridir. Ular bizga oâzgaruvchilar va ifodalarni ${â¦} ga oârab, string ichiga kiritishga imkon beradi, masalan:
let name = "John";
// o'zgaruvchini kiritish
alert( `Hello, ${name}!` ); // Hello, John!
// ifodani kiritish
alert( `natija ${1 + 2}` ); // natija 3
${â¦} ichidagi ifoda baholanadi va natija stringning bir qismiga aylanadi. Biz u yerga hamma narsani qoâyishimiz mumkin: name kabi oâzgaruvchi yoki 1 + 2 kabi arifmetik ifoda yoki murakkabroq narsa.
Eâtibor bering, buni faqat teskari qoâshtirnoqlarda qilish mumkin. Boshqa qoâshtirnoqlarda bunday kiritish funksionalligis yoâq!
alert( "natija ${1 + 2}" ); // natija ${1 + 2} (qo'sh qo'shtirnoq hech narsa qilmaydi)
Stringlar haqida Satrlar bobida batafsilroq gaplashamiz.
Baâzi tillarda bitta belgi uchun maxsus âcharacterâ turi mavjud. Masalan, C tilida va Java da u âcharâ deb ataladi.
JavaScript da bunday tur yoâq. Faqat bitta tur bor: string. String nol belgilardan iborat boâlishi (boâsh boâlishi), bitta belgi yoki koâplab belgilardan iborat boâlishi mumkin.
Boolean (mantiqiy tur)
Boolean turida faqat ikkita qiymat bor: true va false.
Bu tur odatda ha/yoâq qiymatlarini saqlash uchun ishlatiladi: true âha, toâgâriâ ni anglatadi va false âyoâq, notoâgâriâ ni anglatadi.
Masalan:
let nameFieldChecked = true; // ha, ism maydoni belgilangan
let ageFieldChecked = false; // yo'q, yosh maydoni belgilanmagan
Boolean qiymatlar taqqoslash natijasida ham paydo boâladi:
let isGreater = 4 > 1;
alert( isGreater ); // true (taqqoslash natijasi "ha")
Boolean haqida Mantiqiy operatorlar bobida chuqurroq gaplashamiz.
ânullâ qiymati
Maxsus null qiymati yuqorida tavsiflangan turlarning hech biriga tegishli emas.
U faqat null qiymatini oâz ichiga olgan alohida tur hosil qiladi:
let age = null;
JavaScript da null boshqa tillardagi kabi âmavjud boâlmagan obyektga havolaâ yoki ânull pointerâ emas.
Bu shunchaki âhech narsaâ, âboâshâ yoki ânomaâlum qiymatâ ni ifodalovchi maxsus qiymat.
Yuqoridagi kod age nomaâlum ekanligini bildiradi.
âundefinedâ qiymati
Maxsus undefined qiymati ham alohida turadi. U null kabi oâzining alohida turini hosil qiladi.
undefined ning maânosi âqiymat tayinlanmaganâ.
Agar oâzgaruvchi eâlon qilingan, ammo tayinlanmagan boâlsa, uning qiymati undefined boâladi:
let age;
alert(age); // "undefined" ko'rsatadi
Texnik jihatdan oâzgaruvchiga aniq ravishda undefined tayinlash mumkin:
let age = 100;
// qiymatni undefined ga o'zgartirish
age = undefined;
alert(age); // "undefined"
â¦Ammo buni qilishni tavsiya qilmaymiz. Odatda oâzgaruvchiga âboâshâ yoki ânomaâlumâ qiymat tayinlash uchun null ishlatiladi, undefined esa tayinlanmagan narsalar uchun standart boshlangâich qiymat sifatida saqlanadi.
Obyektlar va Simbollar
object turi maxsus.
Boshqa barcha turlar âprimitivâ deb ataladi, chunki ularning qiymatlari faqat bitta narsani oâz ichiga olishi mumkin (string boâlsin yoki raqam yoki boshqa narsa). Aksincha, obyektlar maâlumotlar toâplamlari va murakkabroq strukturalarni saqlash uchun ishlatiladi.
Shunday muhim boâlganligi sababli, obyektlar maxsus munosabatga loyiq. Primitiv turlar haqida koâproq oârganganimizdan keyin, Obyektlar bobida ular bilan shugâullanamiz.
symbol turi obyektlar uchun noyob identifikatorlar yaratish uchun ishlatiladi. Toâliqlik uchun bu yerda eslatib oâtishimiz kerak, ammo obyektlarni bilguncha tafsilotlarni keyinga qoldiramiz.
typeof operatori
typeof operatori operandning turini qaytaradi. Turli turdagi qiymatlarni turlicha qayta ishlashni xohlaganda yoki shunchaki tezkor tekshirish qilishni xohlaganda foydali.
typeof x ga murojaat string koârinishida tur nomini qaytaradi:
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
Oxirgi uchta satr qoâshimcha tushuntirish talab qilishi mumkin:
Mathmatematik amallarni taâminlovchi oârnatilgan obyekt. Biz uni Raqamlar bobida oârganamiz. Bu yerda u shunchaki obyekt misoli sifatida xizmat qiladi.typeof nullning natijasi"object". Bu JavaScript ning eng dastlabki kunlaridan kelib chiqqan va muvofiqlik uchun saqlangantypeofdagi rasman tan olingan xato. Albatta,nullobyekt emas. Bu oâzining alohida turiga ega maxsus qiymat.typeofning xatti-harakati bu yerda notoâgâri.typeof alertning natijasi"function", chunkialertfunksiya. Biz funksiyalarni keyingi boblarda oârganamiz, u yerda JavaScript da maxsus âfunctionâ turi yoâqligini ham koâramiz. Funksiyalar obyekt turiga tegishli. Ammotypeofularni boshqacha koârib,"function"qaytaradi. Bu ham JavaScript ning eski kunlaridan kelib chiqqan. Texnik jihatdan bunday xatti-harakat toâgâri emas, ammo amalda qulay boâlishi mumkin.
typeof(x) sintaksisiSiz boshqa sintaksisga ham duch kelishingiz mumkin: typeof(x). Bu typeof x bilan bir xil.
Aniq qilib aytganda: typeof operator, funksiya emas. Bu yerdagi qavslar typeof ning bir qismi emas. Bu matematik guruhlash uchun ishlatiladigan qavslar turi.
Odatda, bunday qavslar (2 + 2) kabi matematik ifodani oâz ichiga oladi, ammo bu yerda ular faqat bitta argument (x) ni oâz ichiga oladi. Sintaktik jihatdan ular typeof operatori va uning argumenti orasidagi boâshliqdan qochishga imkon beradi va baâzi odamlar buni yoqtiradi.
Baâzi odamlar typeof(x) ni afzal koâradi, garchi typeof x sintaksisi ancha keng tarqalgan.
Xulosa
JavaScript da 8 ta asosiy maâlumot turi mavjud.
- Yetti primitiv maâlumot turi:
numberhar qanday turdagi sonlar uchun: butun yoki oânlik, butun sonlar±(253-1)bilan cheklangan.bigintixtiyoriy uzunlikdagi butun sonlar uchun.stringstringlar uchun. String nol yoki koâproq belgilarga ega boâlishi mumkin, alohida bitta belgi turi yoâq.booleantrue/falseuchun.nullnomaâlum qiymatlar uchun â bittanullqiymatiga ega mustaqil tur.undefinedtayinlanmagan qiymatlar uchun â bittaundefinedqiymatiga ega mustaqil tur.symbolnoyob identifikatorlar uchun.
- Va bitta primitiv boâlmagan maâlumot turi:
objectmurakkabroq maâlumot strukturalari uchun.
typeof operatori oâzgaruvchida qaysi tur saqlanganligini koârishga imkon beradi.
- Odatda
typeof xsifatida ishlatiladi, ammotypeof(x)ham mumkin. "string"kabi tur nomi bilan string qaytaradi.nulluchun"object"qaytaradi â bu tildagi xato, aslida obyekt emas.
Keyingi boblarda biz primitiv qiymatlarga eâtibor qaratamiz va ular bilan tanishganimizdan soâng obyektlarga oâtamiz.
Izohlar
<code>yorlig'ini ishlating, bir nechta satrlar uchun - ularni<pre>yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepenâ¦)