Сейчас встал на этой задачке, не могу понять 3 строчку. И ни кто не может объяснить
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 почему три?
почему, есть только объяснение ПОТОМУ!!! Меня это не устраивает. Хотелось бы поразжеванней ответы. Вот думаю найти какой нибудь другой сервис.
В описании урока который написан на https://learn.javascript.ru/ цитирую:
".......... i++ (называется «постфиксная форма») или ++i («префиксная форма»). Постфиксная форма i++ отличается от префиксной ++i тем, что возвращает старое значение, бывшее до увеличения." Тоесть d=b++ ( d=1+1 = 1), а c = ++a ( с=1+1 = 2), из этого следует что:
c = (2+ ++a) - (c = (2+ (1+2) ) = 5) это понятно.
d = (2+ b++) - (d = (2+ (1+1=1 возращает!!!)) = 3 это не понятно, почему 4
Ну и ответ:
alert(b); // 3 , должно быть 1, т.к. везде к переменной b была применена Постфиксная форма i++ которая возращает, а значит если была переменная 1, так и должна остаться 1 сколько ее не плюсую, он все равно вернет!!! Вот так я это понимаю.