Tayinlash ifodalari

JavaScript o‘zgaruvchi yoki xossaga qiymat tayinlash uchun = operatoridan foydalanadi. Masalan:

= operatori o‘zining chap tomonidagi operandining lvalue bo‘lishini kutadi: ya’ni, o‘zgaruvchi yoki obyekt xossasi (yoki massiv elementi). U o‘ng tomonidagi operandining esa har qanday tipdagi ixtiyoriy qiymat bo‘lishini kutadi. Tayinlash ifodasining qiymati o‘ng tomondagi operandning qiymatidir. Qo‘shimcha ta’sir (side effect) sifatida, = operatori o‘ngdagi qiymatni chapdagi o‘zgaruvchi yoki xossaga tayinlaydi, natijada kelajakda bu o‘zgaruvchi yoki xossaga qilingan murojaatlar o‘sha qiymatga baholanadi.

Garchi tayinlash ifodalari odatda ancha sodda bo‘lsa-da, ba’zan tayinlash ifodasining qiymati kattaroq bir ifodaning qismi sifatida ishlatilganini ko‘rishingiz mumkin. Masalan, quyidagi kabi kod bilan bitta ifodada ham qiymat tayinlab, ham uni tekshirishingiz mumkin:

Agar shunday qilsangiz, = va === operatorlari o‘rtasidagi farqni aniq tushunib olganingizga ishonch hosil qiling! E’tibor bering, = juda past ustuvorlikka ega va tayinlash qiymati kattaroq ifodada ishlatilishi kerak bo‘lganda, odatda qavslar zarur bo‘ladi.

Tayinlash operatori o‘ngdan chapga assotsiativlikka ega, bu shuni anglatadiki, agar ifodada bir nechta tayinlash operatori kelsa, ular o‘ngdan chapga qarab bajariladi. Shunday qilib, siz bitta qiymatni bir nechta o‘zgaruvchiga tayinlash uchun quyidagi kabi kod yozishingiz mumkin:

Amal bilan birga tayinlash

Oddiy = tayinlash operatoridan tashqari, JavaScript tayinlashni biror boshqa amal bilan birlashtirish orqali qisqa yozuvlarni taqdim etadigan bir qator boshqa tayinlash operatorlarini ham qo‘llab-quvvatlaydi. Masalan, += operatori qo‘shish va tayinlashni birga bajaradi. Quyidagi ifoda:

quyidagiga ekvivalentdir:

Ko'rinib turibdiki, += operatori sonlar yoki satrlar bilan ishlaydi. Sonli operandlar uchun u qo‘shish va tayinlashni; satrli operandlar uchun esa birlashtirish va tayinlashni amalga oshiradi.

Shunga o‘xshash operatorlarga -=, *=, &= va hokazolar kiradi. 4-2-jadvalda ularning barchasi keltirilgan.

4-2-jadval. Tayinlash operatorlari
OperatorMisolEkvivalenti
+=a += ba = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b
**=a **= ba = a ** b
<<=a <<= ba = a << b
>>=a >>= ba = a >> b
>>>=a >>>= ba = a >>> b
&=a &= ba = a & b
|=a |= ba = a | b
^=a ^= ba = a ^ b

Ko‘p hollarda, quyidagi ifoda:

(bu yerda op — biror operator) quyidagi ifodaga ekvivalentdir:

Birinchi qatorda a ifodasi bir marta bajariladi. Ikkinchisida esa u ikki marta bajariladi. Bu ikki holat faqatgina a ifodasi funksiya chaqiruvi yoki inkrement operatori kabi qo‘shimcha ta’sirlarni (side effects) o‘z ichiga olgandagina farqlanadi. Masalan, quyidagi ikki tayinlash bir xil emas: