JavaScript bilan tanishuv

HTML sahifaning tuzilishini, CSS esa ko'rinishini beradi. Endi uchinchi qatlam navbati — sahifaga «jon» kiritadigan JavaScript. Bu haqiqiy dasturlash tili: u hisoblaydi, qaror qabul qiladi va sahifani o'zgartiradi. Bu darsda JavaScript kodini qayerga yozishni, konsol bilan ishlashni, o'zgaruvchilar va ma'lumot turlarini o'rganamiz.

Bu darsda

  • JavaScript nima va u qayerda ishlaydi
  • Sahifaga JavaScript ulash: <script> tegi va alohida fayl
  • Konsol va console.log()
  • O'zgaruvchilar: let va const, nomlash qoidalari
  • Ma'lumot turlari va typeof
  • Arifmetik amallar, satr va son «tuzog'i», === bilan taqqoslash

JavaScript nima?

JavaScript (qisqacha JS) — veb-sahifalarni harakatga keltiradigan dasturlash tili. HTML va CSS dasturlash tillari emas: ularda hisob-kitob, shart yoki takrorlash yo'q. JavaScript'da esa hammasi bor. Tugma bosilganda nimadir sodir bo'lishi, forma to'g'ri to'ldirilganini tekshirish, yangi xabarlarni sahifani yangilamasdan yuklash, brauzerdagi o'yinlar — bularning hammasi JavaScript.

Eng muhimi: JavaScript — brauzerlar o'zida tushunadigan yagona dasturlash tili. Chrome, Firefox, Safari, Edge — hammasining ichida JavaScript'ni bajaradigan «dvigatel» bor. Shuning uchun hech narsa o'rnatmasdan, darhol yozishni boshlash mumkin.

Nomi o'xshasa ham, JavaScript va Java — butunlay boshqa tillar, xuddi «olma» va «olmaxon» kabi. JavaScript'ni 1995-yilda Brendan Eyx (Brendan Eich) atigi 10 kunda yaratgan. Dastlab uning nomi Mocha, keyin LiveScript edi. O'sha paytda Java tili juda mashhur bo'lgani uchun, reklama maqsadida tilni «JavaScript» deb qayta nomlashgan. Shu chalkashlik hozirgacha davom etadi.

JavaScript qayerda ishlaydi?

JavaScript'ni sahifaga ulash

1-usul: <script> tegi

JavaScript kodi <script> tegi ichiga yoziladi. Odatda u <body> ning eng oxiriga qo'yiladi:

<!DOCTYPE html>
<html lang="uz">
<head>
  <meta charset="UTF-8">
  <title>Mening sahifam</title>
</head>
<body>
  <h1>Salom!</h1>
  <p>Bu sahifada JavaScript bor.</p>

  <script>
    console.log("Sahifa yuklandi!");
  </script>
</body>
</html>

Nega oxirida? Brauzer sahifani yuqoridan pastga qarab o'qiydi. Agar skript tepada tursa, u hali yaratilmagan elementlarni topa olmaydi, sahifaning ko'rinishi ham kechikadi. Oxirida tursa, skript ishga tushganda butun sahifa allaqachon tayyor bo'ladi.

2-usul: alohida script.js fayli

Haqiqiy loyihalarda JavaScript, xuddi CSS kabi (CSS asoslari darsi), alohida faylga yoziladi. Loyiha papkasi shunday ko'rinadi:

veb-sayt/
├── index.html
├── style.css
└── script.js
<head>
  <meta charset="UTF-8">
  <title>Mening sahifam</title>
  <link rel="stylesheet" href="style.css">
  <script src="script.js" defer></script>
</head>
console.log("Salom, men script.js faylidan keldim!");

src atributi faylning yo'lini ko'rsatadi. defer («kechiktirish») esa brauzerga «bu skriptni HTML to'liq o'qib bo'lingandan keyin ishga tushir» deydi — shuning uchun bunday skriptni <head> ichiga ham qo'yish mumkin. src li <script> tegi ichiga kod yozilmaydi, lekin yopuvchi </script> tegi baribir shart.

Konsol — dasturchining daftari

console.log() buyrug'i qavs ichidagi qiymatni konsolga chiqaradi. Konsol — dasturchi uchun maxsus oyna: sahifaga tashrif buyurgan odam uni ko'rmaydi. Unda kodimiz nima qilayotganini kuzatamiz va xatolarni ko'ramiz.

console.log("Salom, dunyo!");
console.log("Men JavaScript o'rganyapman");
console.log(2 + 3);
console.log("Natija:", 10 * 4);

Matn qo'shtirnoq ichida yoziladi, sonlar esa qo'shtirnoqsiz. console.log() ga vergul bilan bir nechta qiymat bersangiz, ular bo'sh joy bilan ajratib chiqariladi.

Buyruqlar, nuqta-vergul va katta harflar

Har bir qator — bitta buyruq (inglizcha statement). Buyruq oxiriga nuqta-vergul ; qo'yiladi. JavaScript ko'pincha ; siz ham tushunadi, lekin uni har doim qo'yish — yaxshi odat. Yana bir muhim qoida: JavaScript katta va kichik harflarni farqlaydi. console.log ishlaydi, Console.Log esa — yo'q.

Izohlar

Izoh (inglizcha comment) — kod ichidagi odamlar uchun yozilgan eslatma. Brauzer uni o'qimaydi:

// Bu — bir qatorli izoh. Brauzer uni tashlab o'tadi.
console.log("Bu qator ishlaydi");
// console.log("Bu qator esa ishlamaydi");

/*
  Bu — ko'p qatorli izoh.
  Kod nima qilishini tushuntirish uchun qulay.
*/
console.log("Izohlar xalaqit bermaydi"); // qator oxirida ham bo'ladi

VS Code'da qatorni izohga aylantirish uchun Ctrl + / ni bosing. Yana bir marta bosilsa, izoh olib tashlanadi. Kodning bir qismini vaqtincha «o'chirib» turish uchun juda qulay.

O'zgaruvchilar: let va const

O'zgaruvchi (inglizcha variable) — qiymatni saqlab turadigan nomli «quti». Uni let so'zi bilan yaratamiz (bu e'lon qilish deyiladi):

let ism = "Aziz";
let yosh = 17;
console.log(ism);
console.log(yosh);

yosh = 18;   // let qiymatini o'zgartirish mumkin
console.log("Bir yildan keyin:", yosh);

Bu yerda = matematikadagi «teng» emas. U «o'ngdagi qiymatni chapdagi qutiga sol» degani (tayinlash, inglizcha assignment). let faqat bir marta — yaratishda yoziladi. Keyin o'zgaruvchi shunchaki nomi bilan ishlatiladi.

O'zgaruvchini yorlig'i bor qutiga o'xshating. let yosh = 17; — «yosh» deb yozilgan quti oldik va ichiga 17 ni soldik. yosh = 18; — qutidagi 17 ni olib, o'rniga 18 ni soldik. Quti o'sha-o'sha, ichidagi narsa almashdi.

Agar qiymat hech qachon o'zgarmasligi kerak bo'lsa, const (inglizcha constant — «o'zgarmas») ishlatiladi. Uning qiymatini o'zgartirishga urinib ko'raylik — konsolda ataylab xato chiqaramiz:

const tugilganYil = 2008;
console.log("Tug'ilgan yil:", tugilganYil);

tugilganYil = 2010;   // XATO: const qiymatini o'zgartirib bo'lmaydi
console.log("Bu qator bajarilmaydi");

Konsolda TypeError: Assignment to constant variable — «o'zgarmasga qiymat tayinlash» xatosi chiqdi va dastur shu qatorda to'xtadi. Bu yaxshi: const bizni tasodifiy o'zgarishlardan himoya qiladi.

Qoida oddiy: avval const yozing. Agar keyinchalik qiymatni o'zgartirish kerak bo'lsa, let ga almashtiring. Eski kodlarda var ni ham uchratasiz — bu 2015-yilgacha yagona usul edi. Uning chalkash xususiyatlari bor (masalan, bitta nomni ikki marta e'lon qilsa ham xato bermaydi), shuning uchun bugun var ishlatilmaydi.

O'zgaruvchilarni nomlash

Nomlash qoidalari:

Bir necha so'zli nomlar JavaScript'da camelCase («tuya uslubi») bilan yoziladi: birinchi so'z kichik harf bilan, keyingilari katta harf bilan boshlanadi — xuddi tuyaning o'rkachlari kabi: tugilganYil, umumiyNarx, talabalarSoni.

Yaxshi nomYomon nomNega yomon
narxxNom nimani saqlashini aytmaydi
umumiyNarxumumiy narxBo'sh joy mumkin emas — xato
talabaSonitalaba-soniTire ayirish belgisi bo'lib qoladi — xato
oyinchi22oyinchiRaqam bilan boshlanmaydi — xato
oquvchio'quvchiApostrof satr boshlanishi deb tushuniladi — xato
sinfclassclass — JavaScript kalit so'zi

Ma'lumot turlari

Har bir qiymatning turi bor. Tur qiymat bilan nima qilish mumkinligini belgilaydi: sonlarni qo'shish mumkin, matnni esa harflarga bo'lish. JavaScript'ning asosiy turlari:

TurNimaMisollar
numberSon — butun ham, kasr ham (kasr nuqta bilan yoziladi)42, -7, 3.14
stringSatr — matn, qo'shtirnoq ichida"Salom", `Toshkent`
booleanMantiqiy qiymat: rost yoki yolg'ontrue, false
undefined«Aniqlanmagan» — qiymat hali berilmaganlet a;
null«Hech narsa» — ataylab bo'sh qoldirilganlet tanlov = null;

Qiymatning turini typeof («turi qanday») operatori aytib beradi:

let son = 42;
let kasr = 3.14;
let matn = "Salom";
let rost = true;
let bosh;             // qiymat berilmadi
let hechNarsa = null;

console.log(typeof son);        // number
console.log(typeof kasr);       // number
console.log(typeof matn);       // string
console.log(typeof rost);       // boolean
console.log(typeof bosh);       // undefined
console.log(typeof hechNarsa);  // object — tarixiy xato!

typeof null ning "object" berishi — JavaScript'ning 1995-yildan qolgan mashhur xatosi. Uni tuzatish millionlab eski saytlarni buzib qo'yishi mumkin edi, shuning uchun shunday qoldirilgan. Shunchaki eslab qoling.

Satrlar: uch xil qo'shtirnoq

Satrni uch xil yozish mumkin: qo'shtirnoq "...", bittalik qo'shtirnoq '...' va teskari qo'shtirnoq — backtick `...` (klaviaturada Esc ostidagi, 1 dan chapdagi tugma).

O'zbekcha matnda apostrof ko'p: o'zbek, bo'ldi, ma'lumot. Bittalik qo'shtirnoq ichida apostrof satrni «yopib qo'yadi» va xato chiqadi:

let xato = 'Bu bo'ldi';    // SyntaxError: satr "bo" da tugadi
let togri = "Bu bo'ldi";   // to'g'ri

Shuning uchun o'zbekcha matnlar uchun doim "..." yoki `...` ishlating.

Backtick'ning o'ziga xos kuchi bor: uning ichida ${...} yordamida o'zgaruvchi yoki hisob-kitobni to'g'ridan-to'g'ri matnga qo'yish mumkin. Bu shablon satr (inglizcha template literal) deyiladi:

const ism = "Madina";
const yosh = 16;

// Eski usul: + bilan ulash
console.log("Mening ismim " + ism + ", men " + yosh + " yoshdaman.");

// Zamonaviy usul: shablon satr
console.log(`Mening ismim ${ism}, men ${yosh} yoshdaman.`);
console.log(`Kelasi yil ${yosh + 1} yoshga to'laman.`);

Natija bir xil, lekin shablon satrni yozish ham, o'qish ham osonroq: + va qo'shtirnoqlarni sanab o'tirish shart emas.

Arifmetik amallar

AmalMa'nosiMisolNatija
+Qo'shish7 + 310
-Ayirish7 - 34
*Ko'paytirish7 * 321
/Bo'lish7 / 23.5
%Bo'linmaning qoldig'i7 % 31
**Darajaga ko'tarish2 ** 101024

% (qoldiq) juda foydali: son % 2 nol bo'lsa — son juft; daqiqa % 60 — soatdan ortib qolgan daqiqalar. Amallar matematikadagi tartibda bajariladi: avval **, keyin * / %, so'ng + -. Tartibni o'zgartirish uchun qavs ishlatiladi.

O'zgaruvchining qiymatini o'zgartirishning qisqa yozuvlari ham bor:

let ball = 10;
ball = ball + 5;     // 15
ball += 5;           // 20 — "ball = ball + 5" ning qisqasi
ball -= 3;           // 17
ball *= 2;           // 34
ball++;              // 35 — bittaga oshirish
ball--;              // 34 — bittaga kamaytirish
console.log("Ball:", ball);
console.log((2 + 3) * 4, 2 + 3 * 4);   // qavsning ta'siri

Satr va son «tuzog'i»

+ belgisi ikki ish qiladi: sonlarni qo'shadi, satrlarni esa ulaydi. Agar ulardan biri satr bo'lsa, JavaScript ikkinchisini ham satrga aylantirib, ularni yopishtiradi. Boshqa amallar (-, *, /) esa satrni songa aylantirishga harakat qiladi:

console.log(5 + 3);       // 8
console.log("5" + 3);     // 53 — satrlar ulandi!
console.log("5" - 3);     // 2
console.log("5" * 3);     // 15
console.log(typeof ("5" + 3));   // string

Bu ayniqsa foydalanuvchi kiritgan ma'lumotda xavfli: formadagi maydon yoki prompt() dan kelgan qiymat doim satr bo'ladi, hatto foydalanuvchi son yozgan bo'lsa ham. Shuning uchun turni o'zimiz aylantiramiz:

const matn = "25";
const son = Number(matn);         // satrni songa aylantirish
console.log(son + 5);             // 30

console.log(String(100) + 1);     // 1001 — sonni satrga
console.log(parseInt("12px"));    // 12 — boshidagi butun sonni oladi
console.log(parseFloat("3.5 kg"));  // 3.5 — kasr sonni oladi
console.log(Number("salom"));     // NaN — «son emas»

NaN (inglizcha Not a Number — «son emas») — songa aylantirib bo'lmagan narsaning natijasi. Konsolda NaN ko'rsangiz, qayerdadir son o'rniga matn kelganini qidiring.

Konsolda 53 va "53" bir xil ko'rinadi — qo'shtirnoqlar chiqmaydi. Qiymat son yoki satr ekanini bilish uchun typeof dan foydalaning.

Taqqoslash: === va ==

Taqqoslash amallari true yoki false qaytaradi:

AmalMa'nosiMisol
===Teng (qiymati ham, turi ham)5 === 5 → true
!==Teng emas5 !== 3 → true
> <Katta, kichik10 > 7 → true
>= <=Katta yoki teng, kichik yoki teng3 <= 3 → true

JavaScript'da tenglikni tekshirishning ikki usuli bor: === (qat'iy) va == (yumshoq). Yumshoq taqqoslash avval turlarni «moslashtiradi» va g'alati natijalar beradi:

console.log(5 === 5);       // true
console.log(5 === "5");     // false — turlari har xil
console.log(5 == "5");      // true  — == turga qaramaydi
console.log(0 == "");       // true  — g'alati!
console.log(10 !== 7);      // true

Doim === va !== ishlating. == va != kutilmagan xatolarga olib keladi. Shuningdek, = (tayinlash) bilan === (taqqoslash) ni adashtirmang!

alert() va prompt()

Brauzerning ikkita oddiy oynasi bor: alert() xabar ko'rsatadi, prompt() esa savol berib, foydalanuvchi yozgan javobni satr sifatida qaytaradi. Quyidagi muharrirda qatorlar izohga olingan — sinab ko'rish uchun qator boshidagi // ni o'chiring:

// alert("Salom! Bu — alert oynasi.");

// const ism = prompt("Ismingiz nima?");
// console.log(`Salom, ${ism}!`);

// const yosh = Number(prompt("Yoshingiz nechada?"));
// console.log(`5 yildan keyin ${yosh + 5} yoshda bo'lasiz.`);

Bu oynalar sahifani «qotirib» qo'yadi va ko'rinishini o'zgartirib bo'lmaydi, shuning uchun haqiqiy saytlarda kam ishlatiladi. Keyingi darslarda ularning o'rniga sahifadagi kiritish maydonlari va tugmalardan foydalanamiz (DOM darsi).

Math — tayyor matematik vositalar

Math — JavaScript'ga o'rnatilgan «kalkulyator»: yaxlitlash, eng katta sonni topish, tasodifiy son va boshqalar:

console.log(Math.round(4.6));     // 5 — yaqin butun songa yaxlitlash
console.log(Math.floor(4.9));     // 4 — pastga yaxlitlash
console.log(Math.ceil(4.1));      // 5 — yuqoriga yaxlitlash
console.log(Math.max(3, 9, 2));   // 9 — eng kattasi
console.log(Math.min(3, 9, 2));   // 2 — eng kichigi
console.log(Math.random());       // 0 va 1 orasidagi tasodifiy son

// O'yin soqqasi: 1 dan 6 gacha tasodifiy butun son
const soqqa = Math.floor(Math.random() * 6) + 1;
console.log("Soqqa:", soqqa);

«Ishga tushirish» ni bir necha marta bosing — tasodifiy sonlar har safar boshqacha. Soqqa formulasini tahlil qilamiz: Math.random() * 6 — 0 dan 6 gacha (6 kirmaydi) kasr son; Math.floor uni 0–5 butun songa aylantiradi; + 1 esa 1–6 qiladi.

Python'ni bilsangiz

Agar Python kursini o'tgan bo'lsangiz, ko'p narsa tanish. Asosiy farqlar:

PythonJavaScript
print("Salom")console.log("Salom");
yosh = 17let yosh = 17; yoki const
umumiy_narx (snake_case)umumiyNarx (camelCase)
f"Salom, {ism}"`Salom, ${ism}`
True, False, Nonetrue, false, null (va undefined)
# izoh// izoh
int("5"), str(5)Number("5"), String(5)
7 // 2 → 3Math.floor(7 / 2) → 3
"5" + 3 → xato"5" + 3 → "53"
=====

Mashqlar

1-mashq To'rtburchak yuzi

To'rtburchakning eni va bo'yi berilgan. Uning yuzini hisoblab, yangi yuza o'zgaruvchisiga saqlang va konsolga aynan Yuzi: 24 ko'rinishida chiqaring.

const eni = 4;
const boyi = 6;
// shu yerdan davom eting
Ishora

Yuza = eni × bo'yi. JavaScript'da ko'paytirish belgisi — *. Chiqarish uchun console.log("Yuzi:", yuza) yoki shablon satrdan foydalaning.

Yechimni ko'rish
const eni = 4;
const boyi = 6;
const yuza = eni * boyi;
console.log(`Yuzi: ${yuza}`);

2-mashq Shablon satr bilan tanishtirish

Berilgan o'zgaruvchilardan foydalanib, shablon satr (backtick) yordamida konsolga aynan quyidagi gapni chiqaring. Kelasi yilgi yoshni qo'lda yozmang — ${...} ichida hisoblang.

Men Dilnoza, Buxorodanman. Kelasi yil 16 yoshga to'laman.
const ism = "Dilnoza";
const shahar = "Buxoro";
const yosh = 15;
// shu yerga console.log yozing
Ishora

«Buxorodanman» so'zi ${shahar}danman ko'rinishida yoziladi. Kelasi yilgi yosh — ${yosh + 1}.

Yechimni ko'rish
const ism = "Dilnoza";
const shahar = "Buxoro";
const yosh = 15;
console.log(
  `Men ${ism}, ${shahar}danman. Kelasi yil ${yosh + 1} yoshga to'laman.`
);

3-mashq Daqiqalarni soatga aylantirish

Kino 135 daqiqa davom etadi. Buni soat va daqiqaga aylantiring va konsolga 2 soat 15 daqiqa deb chiqaring. Kod boshqa son uchun ham to'g'ri ishlashi kerak (masalan, 200 uchun 3 soat 20 daqiqa).

const daqiqalar = 135;
Ishora

To'liq soatlar soni — daqiqalar / 60 ning butun qismi: Math.floor(...). Ortib qolgan daqiqalar — bo'lishdagi qoldiq: daqiqalar % 60.

Yechimni ko'rish
const daqiqalar = 135;
const soat = Math.floor(daqiqalar / 60);
const qoldiq = daqiqalar % 60;
console.log(`${soat} soat ${qoldiq} daqiqa`);

O'zingizni sinang

JavaScript va Java o'rtasidagi bog'liqlik qanday?

  1. JavaScript — Java'ning yangi versiyasi
  2. JavaScript — Java'ning brauzerdagi qismi
  3. Ular butunlay boshqa tillar, nomi reklama uchun o'xshatilgan
  4. Ular bitta til, faqat nomi ikki xil

To'g'ri. Nomi o'xshash bo'lgani bilan JavaScript va Java — mutlaqo boshqa tillar.

Quyidagi kod ishga tushirilsa nima bo'ladi?

const narx = 5000;
narx = 6000;
  1. narx 6000 ga teng bo'ladi
  2. Xato chiqadi: const qiymatini o'zgartirib bo'lmaydi
  3. narx 11000 ga teng bo'ladi
  4. Hech narsa bo'lmaydi, narx 5000 bo'lib qoladi

To'g'ri. TypeError: Assignment to constant variable. Qiymati o'zgaradigan o'zgaruvchi uchun let ishlatiladi.

console.log("5" + 3); nima chiqaradi?

  1. 8
  2. 2
  3. Xato
  4. 53

To'g'ri. Qo'shiluvchilardan biri satr bo'lsa, + ularni ulaydi. Avval Number("5") bilan songa aylantirish kerak.

typeof true nima qaytaradi?

  1. "boolean"
  2. "string"
  3. "true"
  4. "number"

To'g'ri. true va false — mantiqiy (boolean) turdagi qiymatlar.

17 % 5 ning natijasi nechaga teng?

  1. 3.4
  2. 2
  3. 3
  4. 85

To'g'ri. 17 ni 5 ga bo'lsak, 3 marta sig'adi (15) va 2 qoldiq qoladi.

Xulosa

  • JavaScript — brauzerlar o'zida bajaradigan dasturlash tili. Java bilan aloqasi yo'q.
  • Kod <body> oxiridagi <script> ichiga yoki alohida faylga yoziladi: <script src="script.js" defer></script>.
  • console.log() — konsolga chiqarish. Brauzerda konsol F12 → Console.
  • O'zgaruvchilar: const — o'zgarmas, let — o'zgaradigan. var ishlatmang. Nomlar camelCase'da, apostrofsiz.
  • Asosiy turlar: number, string, boolean, undefined, null. Turni typeof aytadi.
  • O'zbekcha matn uchun "..." yoki `...`; shablon satrda ${...} bilan qiymat qo'yiladi.
  • "5" + 3 → "53". Satrni songa Number() bilan aylantiring. Taqqoslash uchun doim ===.