JavaScriptda prefiks va postfiks tipi
Aslida inkrement va dekrement amallarini
ikki usulda yozish mumkin. Keling
ushbu usullarni ++ misolida
ko'rib chiqaylik, -- uchun ham hammasi o'xshash bo'ladi.
Birinchi usulda amal o'zgaruvchi nomidan
keyin yoziladi, mana shunday: a++,
ikkinchi usulda esa - o'zgaruvchi nomidan oldin,
mana shunday: ++a.
Birinchi shakl postfiksli deb ataladi, ikkinchisi esa - prefiksli. Keling, ushbu ikkala shakl o'rtasidagi farq qachon namoyon bo'lishini ko'rib chiqaylik.
Bizda alert(a++) kodi va
alert(++a) kodi bo'lsin.
alert(a++) holatida o'zgaruvchi avval
chiqariladi, keyin bittaga oshadi,
alert(++a) holatida esa o'zgaruvchi avval
bittaga oshadi, keyin chiqariladi.
Quyidagi misolda birinchi alert
0 ni chiqaradi, chunki avval ekranga chiqarish
amalga oshadi, keyin o'zgaruvchi oshadi:
let num = 0;
alert(num++); // 0 ni chiqaradi
alert(num); // 1 ni chiqaradi
Endi esa o'zgaruvchi avval oshadi, keyin ekranga chiqariladi:
let num = 0;
alert(++num); // 1 ni chiqaradi - o'zgaruvchi darhol oshdi
Bunday xatti-harakat nafaqat ekranga chiqarish uchun, balki tayinlash uchun ham amal qiladi:
let num1 = 0;
let num2 = num1++; // num2 o'zgaruvchisiga 0 yoziladi
alert(num2); // 0 ni chiqaradi
alert(num1); // 1 ni chiqaradi - num1 o'zgaruvchisi num2 ga yozilgandan keyin o'zgardi
Endi postfiks shaklini prefiks shakliga o'zgartiramiz:
let num1 = 0;
let num2 = ++num1; // num2 o'zgaruvchisiga 1 yoziladi
alert(num2); // 1 ni chiqaradi
Agar bizning amalimiz alohida qatorda bajarilsa, prefiks va postfiks shaklari o'rtasida farq yo'q:
let num = 0;
++num;
num++;
alert(num); // 2 ni chiqaradi
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num = 3;
alert(++num);
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num = 3;
alert(num++);
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num = 3;
alert(--num);
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num = 3;
alert(num--);
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Kodni ishlamasdan, ekranga nima chiqarilishini aniqlang:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);