Могу ли я добавить приращение более чем на 1, в идеале — в строке?

Существует ли версия оператора +=, которая выполняет пост-инкремент?

Я понимаю пре- и пост-инкремент в JS (++i и i++), а также знаю, что i += n хочу увеличить на n, но, насколько я понимаю, оператор += является пре-инкрементом. Если я хочу выполнить встроенный пост-инкремент более чем на 1, какой оператор мне использовать? Это возможно?

В настоящее время мой подход заключается в простом увеличении переменной в другой строке, но было бы неплохо сделать это встроенным!

Лучшее, что я могу придумать: i+=n,i-n

jabaa 03.05.2024 01:53

Этот вопрос обсуждается на Мете.

TylerH 03.05.2024 15:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
2
183
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

По умолчанию оператор += имеет преинкремент. Быстрое использование console.info говорит об этом:

let i=0;
console.info(i++);  // 0 (post-increment)
console.info(i);    // 1
console.info(++i);  // 2 (pre-increment)
console.info(i+=1); // 3 (pre-increment)
Ответ принят как подходящий

Общее решение для пост-инкремента (поведение в стиле i++, где выражение оценивается как исходное значение i, а затем i увеличивается) может и должно заключаться в выполнении приращения в отдельной строке. И пост-инкремент (i++), и пред-инкремент (++i), по сути, являются удобными функциями, которые создают путаницу (как ясно показал ваш изначально запутанный вопрос; вы перепутали термины). Каждый раз, когда различие между ними актуально (когда они не стоят отдельно, вне более крупных выражений), это может создать путаницу, поэтому попытка найти больше способов достижения этих эффектов с помощью явно нестандартных обходных путей сопряжена с трудностями.

Вы можете делать глупые трюки, например:

i+=j,i-j

(хотя это потерпит неудачу, если не будет заключено в круглые скобки практически в каждом сценарии) или:

[i,i+=j][0]  // Or [i,i+=j].shift()

что безопаснее в более крупных выражениях, поскольку у него нет проблем с приоритетом и не нужно дважды повторять операнд за счет создания и удаления двухэлементного массива (я надеюсь, что JIT-компилятор сможет преобразовать это в эффективная форма, но кто знает?), но это бессмысленно. Просто выполните более широкое выражение, а затем добавьте i+=j.

Другие вопросы по теме