Bu bob hozir o’rgangan JavaScript xususiyatlarini qisqacha takrorlaydi va nozik momentlarga alohida e’tibor beradi.
Kod tuzilishi
Iboralar nuqta-vergul bilan ajratiladi:
alert("Salom");
alert("Dunyo");
Odatda, qator uzilishi ham ajratuvchi sifatida qaraladi, shuning uchun bu ham ishlaydi:
alert("Salom");
alert("Dunyo");
Bu “avtomatik nuqta-vergul qo’yish” deb ataladi. Ba’zan u ishlamaydi, masalan:
alert("Bu xabardan keyin xato bo'ladi")[(1, 2)].forEach(alert);
Ko’pchilik kod uslubi qo’llanmalari har bir iboradan keyin nuqta-vergul qo’yishga rozi.
Kod bloklari {...}
va ular bilan tsikllar kabi sintaksis konstruksiyalaridan keyin nuqta-vergul shart emas:
function f() {
// funksiya e'lonidan keyin nuqta-vergul kerak emas
}
for (;;) {
// tsikldan keyin nuqta-vergul kerak emas
}
…Lekin agar biror joyga “qo’shimcha” nuqta-vergul qo’ysak ham, bu xato emas. U e’tiborga olinmaydi.
Batafsil: Kod tuzilishi.
Qat’iy rejim
Zamonaviy JavaScript-ning barcha xususiyatlarini to’liq yoqish uchun skriptlarni "use strict"
bilan boshlashimiz kerak.
'use strict';
...
Direktiva skriptning yuqorisida yoki funksiya tanasining boshida bo’lishi kerak.
"use strict"
bo’lmasa ham, hamma narsa ishlaydi, lekin ba’zi xususiyatlar eski uslubda, “mos” tarzda ishlaydi. Biz odatda zamonaviy xatti-harakatni afzal ko’ramiz.
Tilning ba’zi zamonaviy xususiyatlari (kelajakda o’rganadigan sinflar kabi) qat’iy rejimni bilvosita yoqadi.
Batafsil: Zamonaviy rejim, "use strict".
O’zgaruvchilar
Quyidagilar yordamida e’lon qilish mumkin:
let
const
(doimiy, o’zgartirib bo’lmaydi)var
(eski uslub, keyinroq ko’ramiz)
O’zgaruvchi nomi quyidagilarni o’z ichiga olishi mumkin:
- Harflar va raqamlar, lekin birinchi belgi raqam bo’lmasligi mumkin.
$
va_
belgilar oddiy, harflar bilan teng.- Lotin bo’lmagan alifbolar va ierogliflar ham ruxsat etilgan, lekin odatda ishlatilmaydi.
O’zgaruvchilar dinamik tipga ega. Ular istalgan qiymatni saqlashi mumkin:
let x = 5;
x = "John";
8 ta ma’lumot turi mavjud:
number
suzuvchi nuqta va butun sonlar uchun,bigint
ixtiyoriy uzunlikdagi butun sonlar uchun,string
satrlar uchun,boolean
mantiqiy qiymatlar uchun:true/false
,null
– bittanull
qiymatli tip, “bo’sh” yoki “mavjud emas” ma’nosini bildiradi,undefined
– bittaundefined
qiymatli tip, “tayinlanmagan” ma’nosini bildiradi,object
vasymbol
– murakkab ma’lumotlar tuzilmalari va noyob identifikatorlar uchun, biz ularni hali o’rganmadik.
typeof
operatori qiymat uchun tipni qaytaradi, ikkita istisno bilan:
typeof null == "object"; // tildagi xato
typeof function () {} == "function"; // funksiyalar alohida ko'rib chiqiladi
Batafsil: O'zgaruvchilar va Ma'lumotlar turlari.
O’zaro ta’sir
Biz brauzerni ish muhiti sifatida ishlatamoqdamiz, shuning uchun asosiy UI funksiyalar quyidagicha bo’ladi:
prompt(question, [default])
question
so’rash va tashrif buyuruvchi kiritgan narsani yoki "bekor qilish"ni bossalarnull
ni qaytarish.confirm(question)
question
so’rash va Ok va Bekor qilish o’rtasida tanlashni taklif qilish. Tanlovtrue/false
sifatida qaytariladi.alert(message)
message
ni chiqarish.
Bu funksiyalarning barchasi modal, ular kod bajarilishini to’xtatadi va tashrif buyuruvchi javob berguncha sahifa bilan o’zaro ta’sirni oldini oladi.
Masalan:
let userName = prompt("Ismingiz?", "Alice");
let isTeaWanted = confirm("Choy istaysizmi?");
alert("Tashrif buyuruvchi: " + userName); // Alice
alert("Choy kerak: " + isTeaWanted); // true
Batafsil: Foydalanuvchi bilan muloqot: alert, prompt, confirm.
Operatorlar
JavaScript quyidagi operatorlarni qo’llab-quvvatlaydi:
- Arifmetik
-
Oddiy:
* + - /
, shuningdek qoldiq uchun%
va sonning darajasi uchun**
.Ikkilik plus
+
satrlarni birlashtiradi. Va agar operandlardan biri satr bo’lsa, ikkinchisi ham satrga aylantiriladi:alert( '1' + 2 ); // '12', satr alert( 1 + '2' ); // '12', satr
- Tayinlashlar
-
Oddiy tayinlash:
a = b
va birlashtirilganlara *= 2
kabi. - Bitli
-
Bitli operatorlar eng past, bit darajasida 32-bitli butun sonlar bilan ishlaydi: kerak bo’lganda hujjatlarga qarang.
- Shartli
-
Uchta parametrli yagona operator:
cond ? resultA : resultB
. Agarcond
haqiqiy bo’lsa,resultA
ni qaytaradi, aks holdaresultB
ni. - Mantiqiy operatorlar
-
Mantiqiy VA
&&
va YOKI||
qisqa tutashuv baholashini amalga oshiradi va keyin to’xtagan joyda qiymatni qaytaradi (majburiy ravishdatrue
/false
emas). Mantiqiy EMAS!
operandni boolean tipiga aylantiradi va teskari qiymatni qaytaradi. - Nullish coalescing operatori
-
??
operatori o’zgaruvchilar ro’yxatidan aniqlangan qiymatni tanlash usulini taqdim etadi.a ?? b
ning natijasinull/undefined
bo’lmagunchaa
, keyinb
. - Taqqoslashlar
-
Turli tiplar qiymatlari uchun tenglik tekshiruvi
==
ularni raqamga aylantiradi (null
vaundefined
dan tashqari, ular bir-biriga teng va boshqa hech narsaga teng emas), shuning uchun bular teng:alert( 0 == false ); // true alert( 0 == '' ); // true
Boshqa taqqoslashlar ham raqamga aylantiradi.
Qat’iy tenglik operatori
===
aylantirishni qilmaydi: turli tiplar uning uchun har doim turli qiymatlarni anglatadi.null
vaundefined
qiymatlari maxsus: ular bir-biriga==
teng va boshqa hech narsaga teng emas.Katta/kichik taqqoslashlar satrlarni belgi-belgiga solishtiradi, boshqa tiplar raqamga aylantiriladi.
- Boshqa operatorlar
-
Vergul operatori kabi bir nechtasi bor.
Batafsil: Asosiy operatorlar, matematika, Taqqoslashlar, Mantiqiy operatorlar, Nullab birlashtirish operatori '??'.
Tsikllar
-
Biz 3 turdagi tsiklni ko’rib chiqdik:
// 1 while (condition) { ... } // 2 do { ... } while (condition); // 3 for(let i = 0; i < 10; i++) { ... }
-
for(let...)
tsiklida e’lon qilingan o’zgaruvchi faqat tsikl ichida ko’rinadi. Lekin bizlet
ni tashlab qo’yib, mavjud o’zgaruvchini qayta ishlatishimiz ham mumkin. -
break/continue
direktivlari butun tsikl/joriy iteratsiyadan chiqishga imkon beradi. Ichma-ich tsikllarni buzish uchun yorliqlardan foydalaning.
Batafsil: Tsikllar: while va for.
Keyinroq obyektlar bilan ishlash uchun ko’proq tsikl turlarini o’rganamiz.
“switch” konstruksiyasi
“switch” konstruksiyasi bir nechta if
tekshiruvini almashtirishi mumkin. U taqqoslash uchun ===
(qat’iy tenglik) dan foydalanadi.
Masalan:
let age = prompt("Yoshingiz?", 18);
switch (age) {
case 18:
alert("Ishlamaydi"); // prompt natijasi satr, raqam emas
break;
case "18":
alert("Bu ishlaydi!");
break;
default:
alert("Yuqoridagilardan biriga teng bo'lmagan istalgan qiymat");
}
Batafsil: "switch" ifodasi.
Funksiyalar
JavaScript-da funksiya yaratishning uchta usulini ko’rib chiqdik:
-
Funksiya e’loni: asosiy kod oqimidagi funksiya
function sum(a, b) { let result = a + b; return result; }
-
Funksiya ifodasi: ifoda kontekstidagi funksiya
let sum = function (a, b) { let result = a + b; return result; };
-
Arrow funksiyalar:
// o'ng tomonda ifoda let sum = (a, b) => a + b; // yoki { ... } bilan ko'p qatorli sintaksis, bu yerda return kerak: let sum = (a, b) => { // ... return a + b; }; // argumentlarsiz let sayHi = () => alert("Salom"); // bitta argument bilan let double = (n) => n * 2;
- Funksiyalar mahalliy o’zgaruvchilarga ega bo’lishi mumkin: uning tanasida yoki parametr ro’yxatida e’lon qilinganlar. Bunday o’zgaruvchilar faqat funksiya ichida ko’rinadi.
- Parametrlar standart qiymatlarga ega bo’lishi mumkin:
function sum(a = 1, b = 2) {...}
. - Funksiyalar har doim biror narsa qaytaradi. Agar
return
iborasi bo’lmasa, natijaundefined
bo’ladi.
Batafsil: Funksiyalar, Arrow funksiyalar, asoslar ga qarang.
Davomi bor
Bu JavaScript xususiyatlarining qisqacha ro’yxati edi. Hozircha biz faqat asoslarni o’rgandik. Qo’llanmaning davomida siz JavaScript-ning ko’proq maxsus va ilg’or xususiyatlarini topasiz.
Izohlar
<code>
yorlig'ini ishlating, bir nechta satrlar uchun - ularni<pre>
yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepen…)