Конспект JS-course

Задачи

Задача 1

Посмотрите, понятно ли вам, почему код ниже работает именно так?

var a = 1, b = 1, c, d;

c = ++a; alert(c); // 2
d = b++; alert(d); // 1

c = (2 + ++a); alert(c); // 5
d = (2 + b++); alert(d); // 4

alert(a); // 3
alert(b); // 3

Пояснение

var a = 1, b = 1, c, d;

// префиксная форма сначала увеличивает a до 2, а потом возвращает
c = ++a; alert(c); // 2

// постфиксная форма увеличивает, но возвращает старое значение
d = b++; alert(d); // 1

// сначала увеличили a до 3, потом использовали в арифметике
c = (2 + ++a); alert(c); // 5

// увеличили b до 3, но в этом выражении оставили старое значение
d = (2 + b++); alert(d); // 4

// каждую переменную увеличили по 2 раза
alert(a); // 3
alert(b); // 3