Имею опыт разработки на Java. Перешёл вот несколько дней назад на JS (изучаю ещё). Читаю учебник. Читаю запоем, что бы не пропустить какие-то нюансы. На один из них я наткнулся сегодня:
Читаю
здесь
Есть 2 момента:
1.
var i = 1;
var a = ++i; // (*)
alert(a); // 2
Здесь всё понятно и логично.
2.
var i = 1;
var a = i++; // (*)
alert(a); // 1
Это не логично и не понятно вообще.
Потому что есть строка:
var a = i++; // (*)
Здесь порядок исполнения операторов и соот-но кода будет следующий:
- i++
- a = "то что получилось в результате выполнения предыдущей операции, а это 2"
Потом у нас есть
;, который обозначает, что инструкция выполнена и появился переход к следующей инструкции. Уже должно было бы значение
a измениться и стать 2. Но этого не происходит.
Хотя, в любом другом языке было бы проще. Вернётся после выполнения так сказать строки тоже самое. Разница лишь в том, что выведет переменная с пост(пре)инкрементов в момент этой операции. Но не иначе.
Кто-нить это вообще понимает мне интересно? Или это костыль?