პრეფიქსული და პოსტფიქსული ტიპი JavaScript-ში
სინამდვილეში, ინკრემენტისა და დეკრემენტის ოპერაციები
შეიძლება ჩაიწეროს ორი გზით. მოდით
განვიხილოთ ეს გზები ++-ის მაგალითზე,
ხოლო ---ისთვის ყველაფერი ანალოგიური იქნება.
პირველ გზაში ოპერაცია იწერება ცვლადის სახელის შემდეგ,
აი ასე: a++, ხოლო
მეორე გზაში - ცვლადის სახელის წინ,
აი ასე: ++a.
პირველ ფორმას ეწოდება პოსტფიქსული, ხოლო მეორეს - პრეფიქსული. მოდით ვნახოთ, რა შემთხვევებში ვლინდება განსხვავება ამ ორ ფორმას შორის.
დავუშვათ, გვაქვს კოდი alert(a++) და
კოდი alert(++a).
alert(a++)-ის შემთხვევაში ცვლადი ჯერ
გამოიტანება, შემდეგ კი გაიზრდება ერთით,
ხოლო alert(++a)-ის შემთხვევაში ცვლადი ჯერ
გაიზრდება ერთით, შემდეგ კი გამოიტანება.
შემდეგ მაგალითში პირველი alert გამოიტანს
0-ს, რადგან თავიდან მოხდება ეკრანზე გამოტანა,
ხოლო შემდეგ ცვლადი გაიზრდება:
let num = 0;
alert(num++); // გამოიტანს 0-ს
alert(num); // გამოიტანს 1-ს
ახლა კი ცვლადი თავიდან გაიზრდება, ხოლო შემდეგ მოხდება ეკრანზე გამოტანა:
let num = 0;
alert(++num); // გამოიტანს 1-ს - ცვლადი დაუყოვნებლივ გაიზარდა
მსგავსი ქმედება სამართლიანია არა მხოლოდ ეკრანზე გამოტანისთვის, არამედ მინიჭებისთვისაც:
let num1 = 0;
let num2 = num1++; // num2 ცვლადში ჩაიწერება 0
alert(num2); // გამოიტანს 0-ს
alert(num1); // გამოიტანს 1-ს - num1 ცვლადი შეიცვალა num2-ში ჩაწერის შემდეგ
ახლა კი პოსტფიქსული ფორმა შევცვალოთ პრეფიქსულით:
let num1 = 0;
let num2 = ++num1; // num2 ცვლადში ჩაიწერება 1
alert(num2); // გამოიტანს 1-ს
თუ ჩვენი ოპერაცია სრულდება ცალკე სტრიქონზე, მაშინ განსხვავება პრეფიქსულ და პოსტფიქსულ ფორმებს შორის არ არის:
let num = 0;
++num;
num++;
alert(num); // გამოიტანს 2-ს
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num = 3;
alert(++num);
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num = 3;
alert(num++);
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num = 3;
alert(--num);
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num = 3;
alert(num--);
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
კოდის გაშვების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);