Почему используются сравнения «задом наперед», например, false == obj.prop.subProp? Часто встречаю, особенно во всевозможных проверках, в стороннем коде конструкции типа
false == obj.prop.subProp
или
1 == arr[8]
и т.п.
Вроде, как нормальный, воспринимается порядок "что" == "с чем" или "переменная" == "константа". Почему
иногда используются сравнения "задом наперед", например false == obj.prop.subProp?

21 Авг 2019 в 06:19
388 +1
0
Ответы
1

Есть несколько причин, по которым разработчики могут использовать такой порядок в сравнениях:

Избежание ошибок присваивания: если по ошибке использовать одиночный знак равенства вместо двойного, компилятор выдаст ошибку, если использовать константу или литерал слева от оператора сравнения. Например, если написать if a=10a = 10a=10 вместо if a==10a == 10a==10, компилятор выдаст ошибку на этапе компиляции. Однако, если написать if 10=a10 = a10=a, компилятор такую ошибку не выдаст, поскольку нельзя присваивать значение константе или литералу.

Облегчение чтения кода: некоторым разработчикам такой порядок сравнения кажется более читабельным или понятным. Например, false == obj.prop.subProp может быть проще прочитать и понять, чем obj.prop.subProp == false.

Рекомендации линтеров: некоторые инструменты статического анализа кода могут предлагать или требовать использование порядка "значение == переменная" вместо "переменная == значение" для более безопасного кода и предотвращения ошибок.

Таким образом, хотя порядок сравнения "задом наперед" может показаться странным, в некоторых случаях он может быть предпочтителен из-за безопасности или удобства написания кода.

20 Апр 2024 в 13:20
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир