JavaScript asoslari

Ma'lumot turlari

JavaScript'da qiymatlar har doim ma'lum bir turga (type) tegishli bo'ladi. Masalan, matn yoki son. Jami 8 ta asosiy ma'lumot turi mavjud. Ushbu darsda ular bilan umumiy tanishamiz.

JavaScript โ€” dinamik tildir

JavaScript'da bir o'zgaruvchi vaqt o'tishi bilan turli tipdagi ma'lumotlarni saqlashi mumkin. Bunday tillar dinamik tipli (dynamically typed) deb ataladi:

dinamik.js
// natija shu yerda chiqadi

Bu yerda message avval matn, keyin son bo'ldi โ€” hech qanday xatosiz. Endi 8 ta turni birma-bir ko'rib chiqamiz.

1. Number (son)

number turi butun va kasr sonlarni ifodalaydi. Sonlar ustida ko'plab amallar bajarish mumkin: qo'shish (+), ayirish (-), ko'paytirish (*), bo'lish (/) va boshqalar.

number.js
// natija shu yerda chiqadi

Oddiy sonlardan tashqari maxsus son qiymatlari ham bor: Infinity (cheksizlik), -Infinity va NaN (Not a Number โ€” noto'g'ri matematik amal natijasi).

maxsus-son.js
// natija shu yerda chiqadi

2. BigInt (katta butun son)

Oddiy number turi juda katta sonlarni aniq saqlay olmaydi (taxminan 2 dan 53-darajagacha bo'lgan chegara bor). Bunday hollarda bigint turi ishlatiladi. BigInt qiymati son oxiriga n qo'yish orqali yaratiladi:

bigint.js
// natija shu yerda chiqadi
BigInt kundalik dasturlashda kamdan-kam kerak bo'ladi. U kriptografiya yoki juda aniq katta sonlar bilan ishlash kabi maxsus vazifalarda ishlatiladi.

3. String (matn)

string โ€” bu matn. U tirnoqlar ichiga olinadi. JavaScript'da uch xil tirnoq bor:

string.js
// natija shu yerda chiqadi
Ikki va bitta tirnoq orasida amalda hech qanday farq yo'q. Teskari tirnoqlar esa qo'shimcha imkoniyat beradi โ€” ular ichida ${...} orqali o'zgaruvchi va ifodalar joylashtiriladi. Buni keyingi boblarda ko'ramiz.

4. Boolean (mantiqiy tur)

boolean turining faqat ikkita qiymati bor: true (rost) va false (yolg'on). U odatda "ha/yo'q" tipidagi qiymatlarni saqlash uchun ishlatiladi:

boolean.js
// natija shu yerda chiqadi

5. null (bo'sh qiymat)

null turi faqat bitta null qiymatiga ega. U "hech narsa", "bo'sh" yoki "noma'lum qiymat" ma'nosini bildiradi:

null.js
// natija shu yerda chiqadi
JavaScript'da null boshqa tillardagi kabi "mavjud bo'lmagan obyektga havola" emas. Bu shunchaki "bo'sh" yoki "qiymat yo'q" degan maxsus qiymat.

6. undefined (aniqlanmagan)

undefined turi ham faqat bitta undefined qiymatiga ega. U "qiymat berilmagan" degan ma'noni bildiradi. Agar o'zgaruvchi e'lon qilinsa-yu, unga qiymat berilmasa, uning qiymati avtomatik undefined bo'ladi:

undefined.js
// natija shu yerda chiqadi
null โ€” dasturchi tomonidan qo'yiladigan "bo'sh" qiymat. undefined โ€” esa "umuman qiymat berilmagan" degani. Odatda o'zgaruvchiga undefined ni qo'lda bermaymiz โ€” bo'shligini bildirish uchun null ishlatamiz.

7. Object (obyekt)

Yuqoridagi turlarning barchasi oddiy (primitive) deb ataladi, chunki ularning qiymatlari bitta narsani saqlaydi. object turi esa boshqacha โ€” u ma'lumotlar to'plamini va murakkabroq tuzilmalarni saqlaydi.

object.js
// natija shu yerda chiqadi

Obyektlar shu qadar muhim va keng qamrovliki, ularga alohida boblar bag'ishlangan. Hozircha shuni bilib qo'ying: obyekt โ€” bu nomlangan qiymatlar to'plami.

8. Symbol (simvol)

symbol turi obyektlar uchun noyob va yashirin identifikatorlar yaratishda ishlatiladi. Bu ilg'or mavzu bo'lib, hozircha uni faqat ro'yxatni to'liq qilish uchun eslab qo'yamiz:

let id = Symbol("id");
Symbol kundalik boshlang'ich kodda kam ishlatiladi. U kutubxonalar va murakkab tuzilmalarda noyob kalitlar kerak bo'lganda qo'l keladi.

typeof operatori

typeof operatori argumentning turini matn ko'rinishida qaytaradi. Bu o'zgaruvchi ichida qanday tur borligini tekshirish uchun juda foydali:

typeof-1.js
// natija shu yerda chiqadi

Yana bir nechta muhim holatni ko'ramiz:

typeof-2.js
// natija shu yerda chiqadi
typeof null natijasi "object" โ€” bu JavaScript'ning rasmiy tan olingan xatosi! Aslida null obyekt emas, alohida tur. Bu xato orqaga moslik uchun tuzatilmagan. Buni shunchaki eslab qoling.
typeof funksiyalar uchun "function" qaytaradi, garchi JavaScript'da alohida "function" turi yo'q bo'lsa ham. Funksiyalar texnik jihatdan obyektlarga tegishli, lekin typeof ularni alohida ajratadi โ€” bu amalda qulay.

Xulosa