V7021. The postfix increment or decrement has no effect because the variable is overwritten.
Анализатор обнаружил ошибку, связанную с использованием постфиксных инкремента или декремента при записи в эту же переменную.
Рассмотрим пример:
let value = 0;
....
value = value++; // <=
....
После присваивания переменная value останется равна нулю. Это связано с тем, что постфиксные инкремент и декремент возвращают значение переменной до её изменения. Порядок операций в данном выражении будет следующим:
- Чтение переменной
value; - Увеличение значения переменной
valueна единицу; - Присвоение переменной
valueзначения, полученного на шаге 1.
Таким образом, результат выполнения постфиксных инкремента или декремента теряется при перезаписи в ту же переменную.
Это может быть опечатка, и на самом деле нужно было сохранить результат в другую переменную. В таком случае корректный вариант может выглядеть так:
let value = 0;
let savedValue = ....;
....
savedValue = value++;
....
Либо же программист написал присваивание по ошибке, и на самом деле оно тут не нужно:
let value = 0;
....
value++;
....