JavaScript asoslari

Asosiy operatorlar, matematika

Ko'pgina operatorlarni maktabdan bilamiz: qo'shish +, ayirish -, ko'paytirish * va hokazo. Bu darsda esa maktabda o'qitilmaydigan tomonlariga โ€” operatorlarning JavaScript'ga xos xususiyatlariga e'tibor beramiz.

Atamalar: operand va operator

Davom etishdan oldin ba'zi atamalarni aniqlashtiramiz:

unar-binar.js
// natija shu yerda chiqadi

Matematik amallar

JavaScript quyidagi matematik amallarni qo'llab-quvvatlaydi:

Qoldiq %

% operatori โ€” bu foiz emas! a % b natijasi a ni b ga bo'lgandagi qoldiq bo'ladi:

modul.js
// natija shu yerda chiqadi

Darajaga ko'tarish **

a ** b ifodasi a ni b-darajaga ko'taradi:

daraja.js
// natija shu yerda chiqadi

Plyus (+) va matnlar

Endi maktab matematikasidan farq qiladigan qismga o'tamiz. Odatda + sonlarni qo'shadi. Ammo agar operandlardan biri matn bo'lsa, + ularni songa qo'shmaydi, balki birlashtiradi (konkatenatsiya qiladi):

plyus-matn.js
// natija shu yerda chiqadi
Diqqat qiling: operatorlar chapdan o'ngga ishlaydi. 2 + 2 + "1" da avval 2 + 2 = 4 hisoblanadi, so'ng 4 + "1" = "41" bo'ladi. Lekin "1" + 2 + 2 esa "122" beradi โ€” chunki birinchi qadamdan boshlab matn ishtirok etadi.
Bu xatti-harakat faqat + operatoriga xos. Boshqa arifmetik operatorlar (-, *, /) matnni doim songa o'giradi:
boshqa-operatorlar.js
// natija shu yerda chiqadi

Unar plyus va son konvertatsiyasi

Unar plyus + (bitta operandga qo'llanganda) songa hech qanday ta'sir qilmaydi. Ammo agar operand son bo'lmasa, uni songa o'giradi โ€” xuddi Number() kabi, lekin qisqaroq:

unar-plyus.js
// natija shu yerda chiqadi
+a + +b yozuvi qisqa va ko'p ishlatiladi. Unar plyuslar birinchi ishlaydi (ustuvorligi yuqori), so'ng ikki son binar plyus bilan qo'shiladi.

Operatorlar ustuvorligi

Agar bir ifodada bir nechta operator bo'lsa, ularning bajarilish tartibi ustuvorlik (precedence) bilan aniqlanadi. Maktabdan bilamiz: ko'paytirish qo'shishdan oldin bajariladi. Bu โ€” ko'paytirishning ustuvorligi yuqoriroq degani:

ustuvorlik.js
// natija shu yerda chiqadi

Ustuvorlik jadvalidan ba'zi qatorlar (yuqoridagilar avval bajariladi):

Tayinlash ham qiymat qaytaradi

JavaScript'da = (tayinlash) ham operator hisoblanadi. U o'zgaruvchiga qiymat yozadi va shu qiymatni qaytaradi. Shuning uchun quyidagi kod ishlaydi (garchi o'qish qiyin bo'lsa ham):

assign-qaytaradi.js
// natija shu yerda chiqadi
Bunday yozuv (tayinlashni ifoda ichida ishlatish) kodni tushunarsiz qiladi. Bilib qo'ying, lekin amalda bunday yozmang.

Qisqartma tayinlash operatorlari

Bir o'zgaruvchiga amal qo'llab, natijani o'ziga yozish juda ko'p uchraydi. Buning uchun qisqartma operatorlar bor: +=, -=, *=, /=, %=, **=:

qisqartma.js
// natija shu yerda chiqadi
Bu operatorlarning ustuvorligi oddiy tayinlash = bilan bir xil โ€” past. Shuning uchun ular boshqa hisoblardan keyin bajariladi: n *= 3 + 5 avval 3 + 5 = 8 ni hisoblab, so'ng n *= 8 qiladi.

Xulosa