Каков технический термин для порядка оценки операторов языка программирования? - PullRequest
0 голосов
/ 29 октября 2019

Несколько процедур, таких как деструктуризация массива в JavaScript или манипулирование коллекциями в Python, побудили меня оценить свойство или метод объекта, чтобы проверить, существует ли он вообще, прежде чем продолжить, что часто приводит к следующему шаблону:

var value = collection.length

if value != null {
    if value == targetValue {
      /* do something */
    }
}

В попытке сделать «более чистый» код я хочу сделать что-то вроде:

if value != null && value == targetValue {
      /* do something */
    }

или с троичным оператором:

var value = collection.length != null ? collection.length : 0

Однако я никогда не уверен, чтоКомпилятор прекратит оценку, как только разрешит первое сравнение с null, или продолжит работу и выдаст ошибку. Конечно, я могу выполнить небольшие модульные тесты, но я бы предпочел, чтобы я знал правильный термин для поиска в документации любого языка. Что это за термин или, возможно, он одинаков во всех языках?

1 Ответ

2 голосов
/ 29 октября 2019

Это известно как Оценка короткого замыкания . Это вполне соответствует между языками.

В большинстве языков && будет оценивать только второй аргумент, если первый был истинным, а || будет оценивать его второй, только если первый был ложным.

...