Задать вопрос
@alexbrz77

Инкремент в javascript почему работает так?

<html>

<body>
<script>
'use strict';
var years = prompt('Сколько вам лет?', 100);
years = years++;
alert('Вам ' + years + ' лет!');
</script>
</body>

</html>


Почему после выражения years = years++; переменная years не увеличивается на единицу, а остается равной 100? Я понимаю, что выражение не корректное, но меня интересует механизм языка в данном случае. По идее, переменной years должно было сначала присвоиться ее же старое значение, то есть 100, а затем эта же переменная должна была увеличиться на 1 инкрементом. Но alert выводит все равно 100. Почему так?
javascript
  • Вопрос задан
  • 1283 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@napa3um
years = years++;

// эквивалент:
var tmp = years;
years++;
years = tmp;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
mudrenokanton
@mudrenokanton
frontend dev
Привет, дело в том, что переменная js ссылается на значение, а не на другую переменную. Потому в поток уходят такие инструкции:
1. присвоить years[новое] значение, которое находится в years[старое]
2. инкрементировать значение years[старое]
Ответ написан
Комментировать
@lasmaster
Вся сила в самообразовании
AMar4enko
@AMar4enko
Потому что приоритет операторов и инкремент постфиксный.
stackoverflow.com/questions/3346450/what-is-the-di...
Ответ написан
@ivoronov
Веб-разработчик
Либо так:
years++;
Либо так:
years = ++years;

Почитайте про икрементацию и про приоритетность операторов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы