Какие и в каком порядке произойдут операции?

Не совсем ясно, что в данном примере будет преобладать: приоритет операторов или принципы работы логических операторов И и ИЛИ.

console.log(
        0 < 14 
        ||
        0 > 90 === 0 >= 14
        &&
        0 <= 90
    );
  • Вопрос задан
  • 123 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А при чём тут некие "принципы работы операторов"? Вычисления всегда выполняются согласно приоритета операций.
P.S.
Приоритет операций влияет на построение дерева. В данном случае оно будет такое:
oufdwfg3sv38vy7ekajctwlraye.png
После построения начинается вычисление. Для этого используется обход дерева в глубину.
1. Попадаем в узел ||
2. Вычисляем первый аргумент, попадаем в узел <
3. Вычисляем первый аргумент, попадаем в лист 0, возвращаем значение.
4. Вычисляем второй аргумент, попадаем в лист 14, возвращаем значение.
5. Вычисляем 0 < 14, получаем true, возвращаем значение.
6. Значение первого аргумента true, применяем short-circuit evaluation, игнорируем второй аргумент, возвращаем true.
Ответ написан
delphinpro
@delphinpro
frontend developer
Все нормально срабатывает:

6049eef760bdc628383393.png

Здесь:

0 true - это вызов c(0 < 14)
1 true - это вызов самой внешней функции с()
true - это возвращаемое значение самой внешней функцией с()

Что происходит?

Начинается выполнения условия, переданного во внешнюю функцию.
Сначала вычисляется выражение 0 < 14, затем результат передается в функцию.
Функция выполняется, делая первый вывод и возвращая true.
На этом этапе
выражение c(0 < 14) || c(0 > 90 === 0 >= 14) && c(0 <= 90) имеет вид TRUE || c(0 > 90 === 0 >= 14) && c(0 <= 90). Данное выражение однозначно даст в результате true и поэтому остальные условия не проверяются (для этой стратегии вычислений булевых выражений есть какой-то специальный термин, но я его не помню), и, соответственно, функции не выполняются.
Теперь этот результат (true) передается во внешнюю функцию и она выполняется, делая второй вывод в консоль.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы