Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не покомендован унарный + (https://javascript.ru/forum/misc/80698-pochemu-ne-pokomendovan-unarnyjj.html)

sniffysko 16.07.2020 16:51

Почему не покомендован унарный +
 
Здравствуйте. Подскажите пожалуйста, почему унарные операции ++ и -- впали в немилость? Настраивал сегодня линтер и он лается на инкременты и декременты.
Если есть такое правило, значит, ктото гнобит эти операции и считает нежелательными.
Я что-то упустил в программных трендах? :о)

SuperZen 16.07.2020 18:59

https://eslint.org/docs/rules/no-plusplus

sniffysko 17.07.2020 09:58

Правило то это я видел. Вопрос почему оператор инкремента, существующий практически во всех языках программирования вдруг стал опасным?
i++
i += 1
Как по мне -- инкремент понятнее и применяется именно как итератор.
for, while, do while вот среда его применения. В компилируемых языках, как я понимаю эта команда преобразуется в ассемблерную команду INC.

SuperZen 17.07.2020 11:38

из ссылки:
differences in whitespace can change semantics of source code
var i = 10;
var j = 20;

i ++
j
// i = 11, j = 20

потому что если есть пробел между ++ и переменной ) может трактоваться как сложение со следующей переменной, тест на внимательность

Nexus 17.07.2020 15:39

Цитата:

Сообщение от SuperZen
differences in whitespace can change semantics of source code

Это больше решение последствий, нежели причины.

laimas 17.07.2020 15:53

Nexus,
случай с Opencart, который "аля сжатие" делает, просто вытягивая код в строку более ничего. И я без задней мысли, и получилось, что запись типа 2 + +var превратилась даже не в 2++var (что тоже породит ошибку), а в 2 ++ var. По каким соображением он отклеил + от переменной мама его знает. :)

Nexus 18.07.2020 14:52

laimas, это явно баг минификатора Opencart.
Или вы хотите сказать, что и от преобразования к числу с помощью унарного + нужно отказаться?

laimas 18.07.2020 15:38

Цитата:

Сообщение от Nexus
это явно баг минификатора Opencart

Да, нормальный сделает 2+ +var, но от этого то не легче, и в других движках такая простота тоже доводит до ошибки, делают по варианту 1) - 2++var. :)


Часовой пояс GMT +3, время: 15:48.