JavaScript’ga kirish

JavaScript — bu vebning dasturlash tilidir. Veb-saytlarning mutlaq ko‘pchiligi JavaScript’dan foydalanadi va barcha zamonaviy veb-brauzerlar — kompyuterlar, planshet va telefonlarda — JavaScript interpretatorlarini o'z ichiga oladi. Bu esa JavaScript’ni tarixdagi eng ko‘p joriy etilgan dasturlash tiliga aylantiradi. So'nggi o'n yillikda Node.js texnologiyasi JavaScript’dan veb-brauzerlar tashqarisida ham dasturlash imkonini berdi va Node’ning keskin muvaffaqiyati tufayli JavaScript hozirda dasturiy ta’minot ishlab chiquvchilari orasida eng ko‘p ishlatiladigan dasturlash tilidir. Siz noldan boshlayapsizmi yoki allaqachon JavaScript’dan professional darajada foydalanayapsizmi, ushbu kitob sizga bu tilni mukammal o‘zlashtirishga yordam beradi.

Agar siz boshqa dasturlash tillari bilan tanish bo'lsangiz, quyidagi ma'lumotlar foydali bo'lishi mumkin: JavaScript yuqori darajali, dinamik, interpretatsiya qilinadigan dasturlash tili bo'lib, u obyektga yo'naltirilgan va funksional dasturlash uslublariga yaxshi moslashgan. JavaScript o'zgaruvchilari tiplashtirilmagan (untyped). Uning sintaksisi Java’ga yuzaki asoslangan, ammo bu ikki til boshqa hech qanday jihatdan o‘zaro bog‘liq emas. JavaScript o'zining birinchi darajali funksiyalarini (first-class functions) Scheme tilidan va prototipga asoslangan meros olish xususiyatini (prototype-based inheritance) ancha kam tanilgan Self tilidan olgan. Ammo ushbu kitobdan foydalanish va JavaScript’ni o‘rganish uchun bu tillarni bilishingiz yoki ushbu atamalardan xabardor bo‘lishingiz shart emas.

“JavaScript” nomi ancha chalg‘ituvchidir. Yuzaki sintaktik o‘xshashlikni hisobga olmaganda, JavaScript Java dasturlash tilidan butunlay farq qiladi. Shuningdek, JavaScript o‘zining skript tili sifatidagi ildizlaridan ancha "ulg‘ayib", jiddiy dasturiy injiniring va ulkan kod bazasiga ega loyihalarga mos keladigan, kuchli va samarali umumiy maqsadli tilga aylangan.

JavaScript: Nomlar, Versiyalar va Rejimlar

JavaScript vebning ilk davrlarida Netscape kompaniyasida yaratilgan va texnik jihatdan “JavaScript” — bu Sun Microsystems (hozirgi Oracle) tomonidan litsenziyalangan savdo belgisi bo‘lib, u Netscape’ning (hozirgi Mozilla’ning) til implementatsiyasini tasvirlash uchun ishlatiladi. Netscape tilni standartlashtirish uchun ECMA’ga (Yevropa Kompyuter Ishlab Chiqaruvchilari Assotsiatsiyasi) taqdim etgan va savdo belgisi bilan bog‘liq muammolar tufayli tilning standartlashtirilgan versiyasiga “ECMAScript” degan noqulay nom yopishib qolgan. Amalda esa hamma bu tilni shunchaki JavaScript deb ataydi. Ushbu kitobda esa til standarti va uning versiyalariga murojaat qilishda “ECMAScript” yoki qisqacha “ES” atamalari ishlatiladi.

ECMAScript'ning rivojlanishi

2010-yillarda barcha veb-brauzerlar ECMAScript standartining 5-versiyasini (ES5) qo'llab-quvvatlay boshladi. Ushbu kitob ES5’ni moslik uchun asosiy tayanch (baseline) sifatida qabul qiladi va tilning undan avvalgi versiyalarini endi muhokama qilmaydi. 2015-yilda ES6 versiyasi chiqarildi va u JavaScript’ni skript tilidan yirik miqyosdagi dasturiy injiniring uchun mos keladigan jiddiy, umumiy maqsadli tilga aylantirgan muhim yangi xususiyatlarni, jumladan, class va module sintaksisini qo‘shdi. ES6’dan so'ng ECMAScript spetsifikatsiyasi har yili yangi versiyalar chiqarish jadvaliga o'tdi. Shu sababli, tilning keyingi versiyalari — ES2016, ES2017, ES2018, ES2019 va ES2020 — chiqarilgan yil nomi bilan ataladi.

JavaScript'ning qat'iy rejimi (Strict Mode)

JavaScript rivojlanar ekan, til dizaynerlari ES5’dan oldingi dastlabki versiyalardagi xatolarni tuzatishga harakat qilishdi. Oldingi versiyalar bilan moslikni saqlab qolish uchun meros bo'lib qolgan (legacy) xususiyatlarni, qanchalik kamchiliklari bo'lmasin, olib tashlash imkoni yo'q edi. Biroq, ES5 va undan keyingi versiyalarda, dasturlar JavaScript’ning qat'iy rejimi(strict mode)ni tanlash imkoniga ega bo'ldi. Ushbu rejimda dastlabki versiyalardagi bir qator xatoliklar tuzatilgan. Qat'iy rejimni yoqish mexanizmi "use strict" direktivasi orqali amalga oshiriladi, bu esa keyingi bo'limlarda batafsil tushuntiriladi. Shu bo'limda meros bo'lib qolgan JavaScript va qat'iy rejimdagi JavaScript o'rtasidagi farqlar ham keltiriladi.

ES6 va undan keyingi versiyalarda yangi xususiyatlarni qo'llash ko'pincha qat'iy rejimni avtomatik tarzda ishga tushiradi. Masalan, agar siz ES6 class kalit so'zini ishlatsangiz yoki ES6 moduli yaratgan bo'lsangiz, ushbu class yoki modul ichidagi barcha kod avtomatik ravishda qat'iy bo'ladi va eski, nuqsonli xususiyatlar bu kontekstlarda mavjud bo‘lmaydi.

Ushbu kitob JavaScript’ning meros bo'lib qolgan xususiyatlarini ham yoritib beradi, lekin ularning qat'iy rejimda mavjud emasligini alohida ta’kidlab o‘tadi.

JavaScript'ning asosiy platformasi va muhiti

Foydali bo'lishi uchun har qanday dasturlash tili asosiy kiritish-chiqarish amallarini bajarish uchun platforma yoki standart kutubxonaga (standard library) ega bo'lishi kerak. JavaScript tilining asosiy qismi sonlar, matn, massivlar, to'plamlar, xaritalar va shu kabi ma'lumotlar bilan ishlash uchun minimal API'ni belgilaydi, lekin hech qanday kiritish-chiqarish funksionalligini o'z ichiga olmaydi. Kiritish-chiqarish (shuningdek, tarmoq, ma'lumotlar ombori va grafika kabi murakkabroq xususiyatlar) JavaScript joylashtirilgan "host muhiti"ning (host environment) vazifasi hisoblanadi.

Veb-brauzer muhiti

JavaScript uchun asl host muhiti veb-brauzer bo'lgan va bu hamon JavaScript kodi uchun eng keng tarqalgan ijro muhiti (execution environment) hisoblanadi. Veb-brauzer muhiti JavaScript kodiga foydalanuvchining sichqoncha va klaviaturasidan ma’lumot olishga hamda HTTP so‘rovlari yordamida ma’lumot almashishga imkon beradi. Shuningdek, u JavaScript kodiga HTML va CSS yordamida foydalanuvchiga natijani ko'rsatish imkonini beradi.

Node muhiti

2010-yildan beri JavaScript kodi uchun yana bir host muhiti mavjud. Node, JavaScript’ni veb-brauzer taqdim etgan API'lar bilan ishlashini cheklash o'rniga, unga butun operatsion tizimga kirish imkonini beradi, bu esa JavaScript dasturlariga fayllarni o'qish va yozish, tarmoq orqali ma'lumotlarni yuborish va qabul qilish, HTTP so'rovlarini yaratish va xizmat ko'rsatish imkonini beradi. Node veb-serverlarni yaratish uchun mashhur tanlov bo'lib, shell skriptlariga muqobil sifatida oddiy yordamchi skriptlarni yozish uchun qulay vosita hisoblanadi.

Kitobning tuzilishi

Ushbu kitobning asosiy qismi JavaScript tilining o'ziga qaratilgan. 11-bob JavaScript standart kutubxonasini, 15-bob veb-brauzer host muhitini va 16-bob Node host muhitini tanishtiradi.

Bu kitob avval quyi darajadagi fundamental bilimlarni beradi, so'ngra ular asosida yanada takomillashgan va yuqori darajadagi abstraksiyalarni quradi. Boblarni imkon qadar ketma-ketlikda o'qish tavsiya etiladi. Ammo yangi dasturlash tilini o'rganish hech qachon chiziqli jarayon bo'lmagan, va tilni tasvirlash ham xuddi shunday: har bir til xususiyati boshqalariga bog'liq, va bu kitob tegishli materiallarga - ba’zan oldingi, ba’zan keyingi mavzularga yo‘naltirilgan - ko'plab o'zaro havolalar(cross-references) bilan to'la. Ushbu kirish bobi til bo‘ylab tezkor tanishuvni amalga oshirib, keyingi boblardagi chuqur tahlilni tushunishni osonlashtiradigan asosiy xususiyatlarni tanishtiradi. Agar siz allaqachon tajribali JavaScript dasturchisi bo'lsangiz, bu bobni o'tkazib yuborishingiz mumkin (garchi davom etishdan oldin bobning oxiridagi 1-1 misolni o'qib chiqishdan zavqlanishingiz mumkin bo'lsa ham).