O‘zgaruvchilar
Indentifikatorga biriktirilgan literal o‘zgaruvchi deb ataladi, ulardan dasturning keyingi qismida foydalanishingiz mumkin.
JavaScriptda o‘zgaruvchilarga hech qanday tip biriktirilmaydi. Biron-bir tipdaqi qiymatni o‘zlashtirgandan so‘ng o‘zgaruvchiga boshqa tipdagi qiymatni bersangiz hech qanday xatolik yuz bermaydi va o‘zgaruchi yangi tipni o‘zlashtirib oladi. Shuning uchun JavaScriptni ba’zida tipizatsiyaga ega emas deyishadi. Ammo bu mutlaqo noto‘g‘ri, JavaScript tipizatsiyaga ega va u “dinamik tipizatsiya” qoidalari asosida ishlaydi.
O‘zgaruvchidan foydalanish uchun uni avval e’lon qilish kerak. JavaScriptda buni 3 xil usulda amalga oshirish mumkin: var, let yoki const kalit so‘zlari orqali. Bularning har biri turli maqsadlarda ishlatiladi.
var
orqali e’lon qilish
ES2015 gacha var
o‘zgaruchini e’lon qilishning yagona yo‘li bo‘lgan.
|
|
Agar var
so‘zini qo‘yishni unutsangiz, siz e’lon qilinmagan o‘zgaruvchiga qiymat berayotgan bo‘lasiz va natija siz kutgandek bo‘lmaydi. Zamonaviy muhitlarda yoki strict rejimi yoqilgan bo‘lsa, yuqoridagi holatda xatolik yuz beradi. Eski muhitlarda (yoki strict rejimi o‘chirilgan bo‘lsa), o‘zgaruvchini initsializatsiya qiladi va global obyektga biriktirib qo‘yadi. Qo‘shimcha ma’lumot uchun, initsializatsiya — o‘zgaruvchiga dastlabki qiymatni o‘zashtirish jarayoni.
O‘zgaruvchini e’lon qilganda uni initsializatsiya qilmasangiz, u undefined
qiymatini o‘zlashtiradi va unga yangi qiymat bermaguningizcha bu holatni saqlab turadi.
|
|
Bir o‘zgaruvchini bir necha marta e’lon qilishingiz mumkin, bunda oldingisi inkor qilinadi:
|
|
Bir qatorda bir nechta o‘zgaruvchilarni e’lon qilishingiz ham mumkin:
|
|
Dasturlashda “scope” tushunchasi mavjud, o‘zbek tiliga ko‘rinish sohasi deb tarjima qilsak bo‘ladi (IMHO). Ko‘rinish sohasi deganda o‘zgaruvchi ko‘rinadigan va foydalansa bo‘ladigan dastur qismi tushuniladi.
Funksiyadan tashqarida var orqali e’lon qilingan o‘zgaruvchi global obyektga biriktiriladi va global ko‘rinish sohasiga ega bo‘ladi. Bunday o‘zgaruvchidan dasturning istalgan qismida foydalanishingiz mumkin. Agar var orqali funksiya ichida e’lon qilsangiz, o‘zgaruvchi funksiyaga biriktirladi va u faqat funksiya ichida ishlaydi, funksiya parametri kabi.
Agar funksiya ichida global obyektdagi o‘zgaruvchi bilan bir xil nomdagi o‘zgaruvchi e’lon qilsangiz, funksiya ichidagi ustunlikka ega bo‘ladi va global o‘zgaruvchini inkor qilib yuboradi.
Shuni ta’kidlash muhimki, { }
qavslar bilan ajratilgan blok yaratganiz bilan ko‘rinish sohasi (scope) yaratilmaydi. Funksiya yaratganingizdagina ko‘rinish sohasi yaratiladi, chunki var blok ko‘rinish sohasiga ega emas, balki funksiyaviy ko‘rinish sohaga ega.
Funksiya ichida e’lon qilingan o‘zgaruvchi funksiya bo‘ylab istalgan joyda ishlatilishi mumkin. Hattoki, funksiya ohirida e’lon qilsangiz ham funksiya boshida undan foydalanish mumkin, chunki JavaScript kodni bajarishdan oldin barcha o‘zgaruvchilarni yuqoriga ko‘chiradi. Lekin chalg‘ib ketmaslik uchun o‘zgaruvchini funksiya boshida e’lon qilganingiz ma’qul.
let orqali e’lon qilish
Yuqorida aytganimizdek, var
blok ko‘rinish sohasiga ega emas. Bu muammoni hal qilish uchun ES2015 da let
qo‘shilgan. let
orqali e’lon qilngan o‘zgaruvchining ko‘rinish sohasi faqat o‘zi e’lon qilgan blokka hamda undagi ichki bloklargagina tegishli.
Zamonaviy dasturchilar, asosan, let
dangina foydalanishmoqda, va var
dan butunlay voz kechishmoqda.
Yana bir farqi, funksiya tashqarisida let
orqali e’lon qilganizda, var
dan farqli o‘laroq o‘zgaruvchini global o‘zgaruvchiga aylantirmaydi.
const
orqali e’lon qilish
var
yoki let
yordamida e’lon qilingan o‘zgaruvchilar keyinchalik qiymatini o‘zgartirishi mumkin. const
da e’lon qilingan o‘zgaruvchi initsializatsiya qilingandan keyin boshqa o‘zgarmaydi va uning qiymati o‘zgarmas qiymatga aylanadi, ya’ni konstantaga.
|
|
const
ga istalgan literalni biriktirish mumkin. Yana bir jihati: agar konstantaga obyekt biriktirilgan bo‘lsa, undagi funksiyalari orqali obyekt qiymatlarini o‘zgartirsa bo‘ladi.
const
ko‘rsatkichni o‘zgartirmaslikni ta’minlaydi. Shuningdek, let
kabi blok ko‘rinish sohasiga ega.
Zamonaviy dasturchilar dastur davomida o‘zgarmaydigan o‘zgaruvchilarni const
da e’lon qilishni ma’qul ko‘rishadi, chunki bu keyiknchalik uchrashi mumkin bo‘lgan xatoliklarni oldini oladi.
Tiplar
Siz JavaScriptni tipizatsiyaga ega emas deb eshitgan bo’lishingiz mumkin. Oldin ham ta’kidlaganimdek, bu mutlaqo noto’g’ri. JavaScript tipizatsiyaga ega, va aynan “dinamik tipizatsiya” xususiyatida ishlaydi. Bu degani, siz bir o’zgaruvchiga istalgan turdagi tipni o’zlashtirishingiz mumkin. JavaScriptda ikki xil tiplar mavjud: oddiy va murakkab tiplar.
Oddiy tiplar
Oddiy tiplarga quyidagilar kiradi:
-
Sonlar
-
Qatorlar
-
Mantiqiy tiplar Shuningdek, ikkita maxsus tiplar ham mavjud:
-
null
-
undefined (noaniq)
-
Keling, har birini alohida ko’rib chiqamiz.
Sonlar
JavaScriptda sonlarning faqat bir turi mavjud, bu ham bo’lsa haqiqiy sonlardir.
Sonli literallar raqam ko’rinishida dasturda yoziladi va qanday yozilishiga qarab butun yoki haqiqiy sondagi literal bo’lishi mumkin.
Butun sonlar:
|
|
Haqiqiy sonlar:
|
|
Qatorlar
Qator bu belgilar ketma-ketligidir. Dastur kodida qator literali orqali ifodalanadi va qo’shtirnoq — “”
yoki tirnoq ‘’
belgilari bilan yopiladi.
|
|
JavaScriptda qatorlarni bir necha qatorda ifodalash uchun \ belgidan foydalaniladi.
|
|
Shuningdek, \
belgidan qator orasida ‘’
yoki “”
dan foydalanish uchun qo’llash mumkin. Bu yuqoridagi belgilarni qatorni ochib-yopuvchi begilardan ajratib turadi.
|
|
Qatorlar +
operatori orqali birikishi mumkin.
Qator shabloni
ES2015 da qo’shilgan bo’lib, qatorlar bilan ishlashda yangi imkoniyatlar taqdim etadi.
Qatorda ${ }
orasiga ifoda berib, shablon yaratib ketish mumkin. Masalan, shablonlarsiz:
|
|
Xuddi shuni shablondan foydalanib yozamiz:
|
|
Mantiqiy tip
JavaScript mantiqiy tiplarni ifodalash uchun true yoki false kalit so’zlaridan foydalanadi. Taqqoslash operatorlari (===
, ==
, <
, >
) yuqoridagi ikkisidan birini natija sifatida qaytaradi.
if
, while
kabi tekshiruvchi operatorlar dastur jarayonida mantiqiy tiplardan foydalanadi.
Mantiqiy qiymat ifodani faqat aniq rost yoki yolg’onligida emas, balki rostr yoki yolg’onga yaqin ekanligiga qarab ham aniqlab oladi. Masalan, quyidagi qiymatlarning barchasi yolg’onga yaqin bo’lgani uchun false qiymati olinadi:
|
|
Qolgan barcha holatlarda true olinadi.
null
null
hech qanday qiymat yo’qligini bildiruvchi maxsus qiymat.
Bu qiymat deyarli barcha dasturlash tillarida uchraydi. Masalan Pythonda None shaklida uchraydi.
undefined
undefined
o’zgaruvchini initsializatsiya qilinmaganligi va qiymat noaniq ekanligini bildiradi.
Funksiyaning qaytaruvchi qiymati bo’lmaganda undefined qaytaradi. Shuningdek, funksiya parametri mavjud bo’lsa, lekin funksiya chaqirilganda unga qiymat yuborilmasa, funksiya parametrlarni undefined holatiga o’tkizadi.
Qiymatni undefined
ekanligi quyidagicha tekshiriladi:
|
|
Murakkab tiplar
Yuqorida sanab o’tilgan tiplardan boshqa hammasi murakkab tiplar hisoblanadi. Bular funksiyalar, massivlar va obyektlar. Har birining o’ziga xos jihatlari bor, shuningdek ular obyektni xususiyatlariga ham egalik qiladi.
Ifodalar
Dasturiy kodning yangi qiymat yaratuvchi qismi ifoda deb ataladi.
JavaScriptda ifodalarni bir necha turlari mavjud.
Arifmetik ifodalar
Sonlarni hisoblashda foydalaniluvchi ifodalar kiradi:
|
|
Qator ifodalari
Qatorlar ustida bajariladigan ifodalar
|
|
Birlamchi ifodalari
Bu turga ko’rsatkichlar, literallar va konstantalar kiradi:
|
|
Shuningdek, ba’zi kalit so’zlari
|
|
Massiv va obyekt initsializatsiya ifodalari
|
|
Mantiqiy ifodalar
Mantiqiy ifodalar operatorlar yordamida mantiqiy qiymatni hosil qiladi
|
|
Chap-tomon ifodalari
|
|
Xususiyatga murojat ifodalari
|
|
Obyekt yaratish ifodalari
|
|
Funksiya ta’rifi ifodalari
|
|
Funksiya chaqiruv ifodalari
|
|
Bu ma’lumotlar sizlarni qo’rqitib yubormasin, yana. Maqolaning keyingi qismlarida yuqoridagi ifodalarning har biriga alohida to’xtalib o’tishga harakat qilamiz.