1-qism: Javascript: Kirish
2-qism: Qisqa satrlarda JS: JavaScriptning leksik tuzilishi.
PermalinkO‘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.
Permalinkvar
orqali e’lon qilish
ES2015 gacha var
o‘zgaruchini e’lon qilishning yagona yo‘li bo‘lgan.
var a = 0
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.
var a // typeof a === ‘undefined’
Bir o‘zgaruvchini bir necha marta e’lon qilishingiz mumkin, bunda oldingisi inkor qilinadi:
var a = 1
var a = 2
Bir qatorda bir nechta o‘zgaruvchilarni e’lon qilishingiz ham mumkin:
var a = 1, b = 2
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.
Permalinklet 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.
Permalinkconst
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 a = ‘test’
a const
ga istalgan literalni biriktirish mumkin. Yana bir jihati: agar a 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.
PermalinkTiplar
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.
PermalinkOddiy 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.
PermalinkSonlar
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:
20
546984621654984
0xCC // 16 lik son
Haqiqiy sonlar:
3.14
.1234
5.2e4
PermalinkQatorlar
Qator bu belgilar ketma-ketligidir. Dastur kodida qator literali orqali ifodalanadi va qo’shtirnoq — “”
yoki tirnoq ‘’
belgilari bilan yopiladi.
‘qator’
“matn”
JavaScriptda qatorlarni bir necha qatorda ifodalash uchun \
belgidan foydalaniladi.
“Hammasi bir \
qator”
Shuningdek, \
belgidan qator orasida ‘’
yoki “”
dan foydalanish uchun qo’llash mumkin. Bu yuqoridagi belgilarni qatorni ochib-yopuvchi begilardan ajratib turadi.
‘O\’zbekiston’
Qatorlar +
operatori orqali birikishi mumkin.
PermalinkQator shabloni
ES2015 da qo’shilgan bo’lib, qatorlar bilan ishlashda yangi imkoniyatlar taqdim etadi.
Qatorda ${ }
orasiga ifoda berib, shablon yaratib ketish mumkin. Masalan, shablonlarsiz:
var a = 5
var b = 10
console.log(‘Ko\’paytma ‘ + (a * b) + ‘ ga teng.’)
// Ko’paytma 50 ga teng
Xuddi shuni shablondan foydalanib yozamiz:
var a = 5
var b = 10
console.log(‘Ko\’paytma ${a * b} ga teng.’
// Ko’paytma 50 ga teng
PermalinkMantiqiy 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:
0
-0
NaN
undefined
null
‘’ // bo’sh qator
Qolgan barcha holatlarda true olinadi.
Permalinknull
null
hech qanday qiymat yo’qligini bildiruvchi maxsus qiymat.
Bu qiymat deyarli barcha dasturlash tillarida uchraydi. Masalan Pythonda None shaklida uchraydi.
Permalinkundefined
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:
typeof var === ‘undefined’
PermalinkMurakkab 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.
PermalinkIfodalar
Dasturiy kodning yangi qiymat yaratuvchi qismi ifoda deb ataladi.
JavaScriptda ifodalarni bir necha turlari mavjud.
PermalinkArifmetik ifodalar
Sonlarni hisoblashda foydalaniluvchi ifodalar kiradi:
1 / 2
i++
i -= 2
i * 2
PermalinkQator ifodalari
Qatorlar ustida bajariladigan ifodalar
‘Bu ‘ + ‘qator’
s += ‘qator’
PermalinkBirlamchi ifodalari
Bu turga ko’rsatkichlar, literallar va konstantalar kiradi:
6
2.06
‘bu nimadir’
true
this //joriy obyekt
undefined
i
Shuningdek, ba’zi kalit so’zlari
function
class
function* //funksiya generatori
yield
yield* //boshqa generator yoki iteratorga yo’naltiradi
async function* //asinxron funksiya ifodasi
await
() //guruhlash
PermalinkMassiv va obyekt initsializatsiya ifodalari
[] //array literal
{} //
[1, 2, 3]
{a: 1, b: 2}
{a: {b: 1}}
PermalinkMantiqiy ifodalar
Mantiqiy ifodalar operatorlar yordamida mantiqiy qiymatni hosil qiladi
a && b
a || b
!a
PermalinkChap-tomon ifodalari
new // konstruktordan yangi model yaratadi
super // ota konstruktorni chaqiradi
…obj
PermalinkXususiyatga murojat ifodalari
object.property
object[property]
object[‘property’]
PermalinkObyekt yaratish ifodalari
new object()
new a(1)
PermalinkFunksiya ta’rifi ifodalari
function() {}
function(a, b) { return a * b }
(a, b) => a * b
a => a * 5
() => { return 5 }
PermalinkFunksiya chaqiruv ifodalari
a.x(5)
window.resize()
Bu ma’lumotlar sizlarni qo’rqitib yubormasin, yana. Maqolaning keyingi qismlarida yuqoridagi ifodalarning har biriga alohida to’xtalib o’tishga harakat qilamiz. Bizni kuzatib boring.
Muallif: Nuriddin Kamardinov
Tavsiya qilamiz: Javascript Zero to Hero: To’liq kurs
Written by
Published on
Mohirdev blog
Mohirdev onlayn ta'lim platformasi 2021 - yilda tashkil topgan. Hozirda 50.000dan ortiq o'zbek yoshlariga ta'lim berib kelmoqda.
Mohirdev onlayn ta'lim platformasi 2021 - yilda tashkil topgan. Hozirda 50.000dan ortiq o'zbek yoshlariga ta'lim berib kelmoqda.