Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.07.2020, 16:51
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 79

Почему не покомендован унарный +
Здравствуйте. Подскажите пожалуйста, почему унарные операции ++ и -- впали в немилость? Настраивал сегодня линтер и он лается на инкременты и декременты.
Если есть такое правило, значит, ктото гнобит эти операции и считает нежелательными.
Я что-то упустил в программных трендах? :о)
Ответить с цитированием
  #2 (permalink)  
Старый 16.07.2020, 18:59
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

https://eslint.org/docs/rules/no-plusplus
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2020, 09:58
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 79

Правило то это я видел. Вопрос почему оператор инкремента, существующий практически во всех языках программирования вдруг стал опасным?
i++
i += 1
Как по мне -- инкремент понятнее и применяется именно как итератор.
for, while, do while вот среда его применения. В компилируемых языках, как я понимаю эта команда преобразуется в ассемблерную команду INC.
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2020, 11:38
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

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

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

потому что если есть пробел между ++ и переменной ) может трактоваться как сложение со следующей переменной, тест на внимательность
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2020, 15:39
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Сообщение от SuperZen
differences in whitespace can change semantics of source code
Это больше решение последствий, нежели причины.
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2020, 15:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Nexus,
случай с Opencart, который "аля сжатие" делает, просто вытягивая код в строку более ничего. И я без задней мысли, и получилось, что запись типа 2 + +var превратилась даже не в 2++var (что тоже породит ошибку), а в 2 ++ var. По каким соображением он отклеил + от переменной мама его знает.
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2020, 14:52
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

laimas, это явно баг минификатора Opencart.
Или вы хотите сказать, что и от преобразования к числу с помощью унарного + нужно отказаться?
Ответить с цитированием
  #8 (permalink)  
Старый 18.07.2020, 15:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему некоторые операторы возвращают значения, а не ссылки? dump Общие вопросы Javascript 15 25.07.2012 17:28
Регулярные выражения. Почему находи именно так? jsuse Общие вопросы Javascript 4 21.11.2011 16:37
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
Prototype. Одноблочное определение псевдокласса. Литеральная форма не робит. Почему? GuardCat Общие вопросы Javascript 6 03.10.2011 13:46
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41