Объяснение для примера логических операторов в Eloquent JS - PullRequest
0 голосов
/ 01 июня 2019

У меня проблемы с пониманием следующего примера из книги Eloquent JS:

console.log(
  1 + 1 == 2 && 10 * 10 > 50 // true
);

Может кто-нибудь объяснить мне, шаг за шагом.

Ответы [ 2 ]

2 голосов
/ 01 июня 2019

приоритет оператора :

  • + имеет приоритет 13
  • == имеет приоритет 10
  • *имеет приоритет 14
  • > имеет приоритет 11
  • && имеет приоритет 6

Итак, код эквивалентен:

1 + 1 == 2 && (10 * 10) > 50 // group * (precedence 14)
(1 + 1) == 2 && (10 * 10) > 50 // group + (precedence 13)
(1 + 1) == 2 && ((10 * 10) > 50) // group > (precedence 11)
((1 + 1) == 2) && ((10 * 10) > 50) // group == (precedence 10)

Затем упростим:

((1 + 1) == 2) && ((10 * 10) > 50)
((2) == 2) && ((10 * 10) > 50)
(true) && ((10 * 10) > 50)
(true) && ((100) > 50)
(true) && (true)
true
0 голосов
/ 01 июня 2019

Во-первых, у нас есть один плюс один, и мы проверяем, равно ли оно двум (так оно и есть).

1 + 1 == 2

Тогда у нас есть логический оператор AND (&&), который проверяет, верны ли операторы по обе стороны от него. Пока вышеприведенное верно, поэтому обработка продолжается.

Наконец, мы умножаем десять и десять (100) и проверяем, больше ли оно 50 (оно есть).

10 * 10 > 50

И, наконец, оператор AND видит, что оба аргумента верны, и дает наш результат:

 

console.log(1 + 1 == 2 && 10 * 10 > 50);
...