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:
letconst(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:
numbersuzuvchi nuqta va butun sonlar uchun,bigintixtiyoriy uzunlikdagi butun sonlar uchun,stringsatrlar uchun,booleanmantiqiy qiymatlar uchun:true/false,null– bittanullqiymatli tip, “bo’sh” yoki “mavjud emas” ma’nosini bildiradi,undefined– bittaundefinedqiymatli tip, “tayinlanmagan” ma’nosini bildiradi,objectvasymbol– 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])questionso’rash va tashrif buyuruvchi kiritgan narsani yoki "bekor qilish"ni bossalarnullni qaytarish.confirm(question)questionso’rash va Ok va Bekor qilish o’rtasida tanlashni taklif qilish. Tanlovtrue/falsesifatida qaytariladi.alert(message)messageni 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 = bva birlashtirilganlara *= 2kabi. - 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. Agarcondhaqiqiy bo’lsa,resultAni qaytaradi, aks holdaresultBni. - Mantiqiy operatorlar
-
Mantiqiy VA
&&va YOKI||qisqa tutashuv baholashini amalga oshiradi va keyin to’xtagan joyda qiymatni qaytaradi (majburiy ravishdatrue/falseemas). 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 ?? bning natijasinull/undefinedbo’lmagunchaa, keyinb. - Taqqoslashlar
-
Turli tiplar qiymatlari uchun tenglik tekshiruvi
==ularni raqamga aylantiradi (nullvaundefineddan tashqari, ular bir-biriga teng va boshqa hech narsaga teng emas), shuning uchun bular teng:alert( 0 == false ); // true alert( 0 == '' ); // trueBoshqa taqqoslashlar ham raqamga aylantiradi.
Qat’iy tenglik operatori
===aylantirishni qilmaydi: turli tiplar uning uchun har doim turli qiymatlarni anglatadi.nullvaundefinedqiymatlari 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 bizletni tashlab qo’yib, mavjud o’zgaruvchini qayta ishlatishimiz ham mumkin. -
break/continuedirektivlari 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
returniborasi bo’lmasa, natijaundefinedbo’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…)