JavaScript'теги префикстик жана постфикстик түрү

Чындыгында инкремент жана декремент амалдарын эки жол менен жазууга болот. Келгиле бул жолдорду ++ мисалында карап көрөлү, -- үчүн болсо бардыгы окшош болот.

Биринчи жолдо амал өзгөрмөнүн атынан кийин жазылат, мындай: a++, ал эми экинчи жолдо - өзгөрмөнүн атынан алдын жазылат, мындай: ++a.

Биринчи форма постфикстик деп аталат, ал эми экинчиси - префикстик. Келгиле, бул эки форманын ортосунда кайсы учурларда айырма байкаларын көрөлү.

Бизде alert(a++) коду жана alert(++a) коду бар болсун.

alert(a++) учурда өзгөрмө алгач экранга чыгарылат, андан кийин бирге көбөйөт, ал эми alert(++a) учурда өзгөрмө алгач бирге көбөйөт, андан кийин экранга чыгарылат.

Төмөнкү мисалда биринчи alert 0 чыгарат, себеби алгач экранга чыгаруу ишке ашат, андан кийин гана өзгөрмө көбөйөт:

javascriptlet num = 0;
alert(num++); // 0 чыгарат
alert(num);   // 1 чыгарат

Эми болсо өзгөрмө алгач көбөйөт, ал эми андан кийин гана экранга чыгаруу болот:

javascriptlet num = 0;
alert(++num); // 1 чыгарат - өзгөрмө дароо көбөйдү

Мындай иш-аракет экранга чыгаруу үчүн гана эмес, баалоо үчүн да туура:

javascriptlet num1 = 0;
let num2 = num1++; // num2 өзгөрмөсүнө 0 жазылат
alert(num2); // 0 чыгарат
alert(num1); // 1 чыгарат - num1 өзгөрмөсү num2'ге жазылгандан кийин өзгөрдү

Эми постфикстик форманы префикстик формага алмаштыралы:

javascriptlet num1 = 0;
let num2 = ++num1; // num2 өзгөрмөсүнө 1 жазылат
alert(num2); // 1 чыгарат

Эгерде биздин амал өзүнчө сапта аткарылса, анда префикстик жана постфикстик формалардын ортосунда айырма жок:

javascriptlet num = 0;
++num;
num++;
alert(num); // 2 чыгарат
Задание 1

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num = 3;
alert(++num);
Задание 2

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num = 3;
alert(num++);
Задание 3

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num = 3;
alert(--num);
Задание 4

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num = 3;
alert(num--);
Задание 5

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
Задание 6

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
Задание 7

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
Задание 8

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
Задание 9

Кодду иштетпестен, экранга эмне чыгарыларын аныктагыла:

javascriptlet num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);