JavaScript bo'ylab sayohat

Bu bo'lim kod misollari orqali JavaScript tiliga qisqacha kirish qismini taqdim etadi. Ushbu kirish bobidan so'ng, biz JavaScript’ni eng quyi darajada o'rganishni boshlaymiz: 2-bob JavaScript’dagi izohlar, nuqta-vergullar va Unicode belgilari to'plami kabi tushunchalarni yoritadi. 3-bob esa yanada qiziqarliroq: u JavaScript o'zgaruvchilari va bu o‘zgaruvchilarga tayinlash mumkin bo‘lgan qiymatlarni tushuntiradi.

Quyida ushbu ikki bobning asosiy jihatlarini ko‘rsatish uchun namuna kodi keltirilgan:

Primitiv qiymatlar

Murakkab (Referens) qiymatlar

JavaScript dasturlari boshqarishi mumkin bo‘lgan yana ikkita juda muhim tur - bu obyektlar va massivlar. Bular 6 va 7-boblarning mavzulari, lekin ular shunchalik muhimki, siz ularni bu boblarga yetib borguncha ko'p marta uchratasiz:

Kod misollaridagi izohlar sintaksisi

Siz oldingi kodda ba'zi izohlar strelka (=>) bilan boshlanganini payqagan bo'lishingiz mumkin. Bular izohdan oldingi kod natijasida hosil bo'lgan qiymatni ko'rsatadi va bu men tomondan bosma kitobda veb-brauzer konsoli kabi interaktiv JavaScript muhitini o‘xshatishga bo‘lgan urinishimdir.

Bu // => ko‘rinishidagi izohlar, shuningdek tasdiq (assertion) vazifasini ham bajaradi. Men kodni sinovdan o'tkazadigan va izohda ko'rsatilgan qiymatni hosil qilishini tekshiradigan maxsus vosita yozganman. Umid qilamanki, bu kitobdagi xatolarni kamaytirishga yordam beradi.

Izoh/tasdiqlarning o'zaro bog'liq ikki uslubi mavjud. Agar siz // a == 42 ko'rinishidagi izohni ko'rsangiz, bu izohdan oldingi kod bajarilgandan so'ng, a o'zgaruvchisi 42 qiymatiga ega bo'lishini anglatadi. Agar siz // ! ko'rinishidagi izohni ko'rsangiz, bu izohdan oldingi qatordagi kod istisno (exception) yuzaga keltirishini anglatadi (va undov belgisidan keyingi izohning qolgan qismi odatda qanday turdagi istisno yuzaga kelishini tushuntiradi).

Siz bu izohlarni kitob davomida qo‘llanilishini ko'rishingiz mumkin.

Bu yerda ko‘rsatilgan, massiv elementlarini kvadrat qavslar ichida ro‘yxat qilish yoki obyekt xossalarining nomlarini ularning qiymatlariga jingalak qavslar ichida bog‘lash sintaksisi initsializator ifodasi (initializer expression) deb ataladi va bu 4-bobning mavzularidan faqat bittasidir. Ifoda (expression) - bu qiymat hosil qilish uchun bajarilishi (evaluate) mumkin bo'lgan JavaScript iborasidir. Masalan, obyekt xossasi yoki massiv elementining qiymatiga murojaat qilish uchun . va []dan foydalanish ham ifoda hisoblanadi.

JavaScript'da ifodalarni hosil qilishning eng keng tarqalgan usullaridan biri bu operatorlardan foydalanishdir:

JavaScript ifodalari va ko'rsatmalari

Agar JavaScript ifodalari (expressions) so‘z birikmalariga o‘xshasa, u holda JavaScript ko‘rsatmalari (statements) to‘liq gaplarga o‘xshaydi. Ko'rsatmalar 5-bobning mavzusidir. Qisqacha aytganda, ifoda - bu qiymatni hisoblaydigan, lekin o‘zi hech qanday amal bajarmaydigan narsadir: u dastur holatini (state) hech qanday tarzda o‘zgartirmaydi. Boshqa tomondan, ko‘rsatmalarning qiymati bo‘lmaydi, lekin ular dastur holatini o‘zgartiradi.

Yuqorida o'zgaruvchilarni e'lon qilish va tayinlash ko‘rsatmalarini ko'rdingiz. Ko'rsatmalarning yana bir katta toifasi - bu shartli ko'rsatmalar va sikllar kabi boshqaruv tuzilmalaridir (control structures). Siz ularning misollarini funksiyalarni ko'rib chiqqanimizdan so'ng ko'rasiz.

Funksiyalar

Funksiya - bu bir marta aniqlab, so'ng qayta-qayta chaqira olishingiz mumkin bo'lgan nomlangan va parametrlangan JavaScript kodi blokidir. Funksiyalar rasman 8-bobgacha yoritilmaydi, lekin obyektlar va massivlar kabi, siz ularni bu bobga yetib borguningizgacha ko'p marta uchratasiz. Quyida bir nechta oddiy misollar:

ES6 va undan keyingi versiyalarda funksiyalarni aniqlash uchun qisqartirilgan sintaksis mavjud. Bu ixcham sintaksis argumentlar ro'yxatini funksiya tanasidan ajratish uchun => belgisidan foydalanadi, shuning uchun bu usulda aniqlangan funksiyalar strelkali funksiyalar (arrow functions) deb nomlanadi. Strelkali funksiyalar ko'pincha nomsiz funksiyani boshqa bir funksiyaga argument sifatida uzatish kerak bo'lganda ishlatiladi.

Yuqoridagi kod strelkali funksiyalardan foydalangan holda qayta yozilganda quyidagicha ko'rinadi:

Metodlar

Funksiyalarni obyektlar bilan birga ishlatganimizda, biz metodlarga ega bo'lamiz:

Boshqaruv tuzilmalari

Va'da qilinganidek, quyida JavaScript’ning keng tarqalgan boshqaruv tuzilmasi ko'rsatmalarini namoyish etuvchi funksiyalar keltirilgan:

Obyektga yo'naltirilgan dasturlash

JavaScript obyektga yo'naltirilgan dasturlash (OYD, object-oriented programming - OOP) uslubini qo'llab-quvvatlaydi, lekin u klassik OYD tillaridan sezilarli darajada farq qiladi. 9-bob JavaScript’dagi OYDni ko'plab misollar bilan batafsil yoritadi. Quyida 2D geometrik nuqtalarni ifodalovchi JavaScript klassini qanday aniqlashni ko'rsatuvchi juda oddiy misol keltirilgan. Bu klass nusxalari (instances) bo'lgan obyektlar nuqtaning koordinata boshidan masofasini hisoblaydigan distance() nomli yagona metodga ega:

Keyingi boblar mavzulari

JavaScript’ning fundamental sintaksisi va imkoniyatlari bo'ylab ushbu kirish sayohatimiz shu yerda poyoniga yetadi, lekin kitob tilning qo'shimcha xususiyatlarini qamrab oluvchi mustaqil boblar bilan davom etadi:

10-bob, Modullar

Bir fayl yoki skriptdagi JavaScript kodi boshqa fayl yoki skriptlarda aniqlangan JavaScript funksiyalari va klasslaridan qanday foydalanishini ko'rsatadi.

11-bob, JavaScript Standart Kutubxonasi

Barcha JavaScript dasturlari uchun mavjud bo'lgan ichki o'rnatilgan funksiyalar va klasslarni qamrab oladi. Bunga Map va Set kabi muhim ma'lumotlar tuzilmalari, matndagi andozalarni (pattern) moslashtirish uchun RegExp klassi (regular ifodalar), JavaScript ma'lumotlar tuzilmalarini seriyalashtirish uchun funksiyalar va boshqa ko'p narsalar kiradi.

12-bob, Iteratorlar va Generatorlar

for/of siklining qanday ishlashini va o'z klasslaringizni for/of yordamida iteratsiya qilinadigan (iterable) qilishni tushuntiradi. U shuningdek generator funksiyalari va yield ko'rsatmasini ham qamrab oladi.

13-bob, Asinxron JavaScript

Bu bob JavaScript’da asinxron dasturlashni chuqur o'rganib, callback’lar va event’lar, Promise’larga asoslangan API’lar hamda async va await kalit so'zlarini qamrab oladi. Garchi JavaScript tilining yadrosi asinxron bo'lmasa-da, asinxron API’lar veb-brauzerlarda ham, Node’da ham standart yondashuv hisoblanadi va bu bob ushbu API’lar bilan ishlash usullarini tushuntiradi.

14-bob, Metadasturlash

Boshqa JavaScript dasturchilari foydalanishi uchun kutubxonalar yozadigan dasturchilarga qiziq bo'lishi mumkin bo'lgan JavaScript’ning bir qator takomillashgan xususiyatlarini tanishtiradi.

15-bob, Veb-brauzerlarda JavaScript

Veb-brauzer host muhitini tanishtiradi, veb-brauzerlar JavaScript kodini qanday bajarishini tushuntiradi va veb-brauzerlar tomonidan belgilangan ko'plab API’larning eng muhimlarini qamrab oladi. Bu kitobdagi eng uzun bob.

16-bob, Node bilan Server tomonidagi JavaScript

Node host muhitini tanishtiradi, uning fundamental dasturlash modelini hamda tushunish uchun eng muhim bo'lgan ma'lumotlar tuzilmalari va API’larni qamrab oladi.

17-bob, JavaScript Vositalari va Kengaytmalari

Keng qo'llanilgani va dasturlash samaradorligingizni yanada oshirishi mumkin bo'lgani uchun bilishga arziydigan vositalar va til kengaytmalarini qamrab oladi.