Почему используются сравнения «задом наперед», например, false == obj.prop.subProp? Часто встречаю, особенно во всевозможных проверках, в стороннем коде конструкции типа false == obj.prop.subProp или 1 == arr[8] и т.п. Вроде, как нормальный, воспринимается порядок "что" == "с чем" или "переменная" == "константа". Почему иногда используются сравнения "задом наперед", например false == obj.prop.subProp?
Есть несколько причин, по которым разработчики могут использовать такой порядок в сравнениях:
Избежание ошибок присваивания: если по ошибке использовать одиночный знак равенства вместо двойного, компилятор выдаст ошибку, если использовать константу или литерал слева от оператора сравнения. Например, если написать if (a = 10) вместо if (a == 10), компилятор выдаст ошибку на этапе компиляции. Однако, если написать if (10 = a), компилятор такую ошибку не выдаст, поскольку нельзя присваивать значение константе или литералу.
Облегчение чтения кода: некоторым разработчикам такой порядок сравнения кажется более читабельным или понятным. Например, false == obj.prop.subProp может быть проще прочитать и понять, чем obj.prop.subProp == false.
Рекомендации линтеров: некоторые инструменты статического анализа кода могут предлагать или требовать использование порядка "значение == переменная" вместо "переменная == значение" для более безопасного кода и предотвращения ошибок.
Таким образом, хотя порядок сравнения "задом наперед" может показаться странным, в некоторых случаях он может быть предпочтителен из-за безопасности или удобства написания кода.
Есть несколько причин, по которым разработчики могут использовать такой порядок в сравнениях:
Избежание ошибок присваивания: если по ошибке использовать одиночный знак равенства вместо двойного, компилятор выдаст ошибку, если использовать константу или литерал слева от оператора сравнения. Например, если написать if (a = 10) вместо if (a == 10), компилятор выдаст ошибку на этапе компиляции. Однако, если написать if (10 = a), компилятор такую ошибку не выдаст, поскольку нельзя присваивать значение константе или литералу.
Облегчение чтения кода: некоторым разработчикам такой порядок сравнения кажется более читабельным или понятным. Например, false == obj.prop.subProp может быть проще прочитать и понять, чем obj.prop.subProp == false.
Рекомендации линтеров: некоторые инструменты статического анализа кода могут предлагать или требовать использование порядка "значение == переменная" вместо "переменная == значение" для более безопасного кода и предотвращения ошибок.
Таким образом, хотя порядок сравнения "задом наперед" может показаться странным, в некоторых случаях он может быть предпочтителен из-за безопасности или удобства написания кода.