პრეფიქსული და პოსტფიქსული ტიპი 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);