Пожалуйста, что это значит: if (a && b == c) {} ;? - PullRequest
4 голосов
/ 11 марта 2019

Пожалуйста, что это значит:

if (a && b == c){};

Я не понял логику выражения условия

Ответы [ 2 ]

8 голосов
/ 11 марта 2019

&& имеет более низкий приоритет, чем ==, поэтому он эквивалентен:

if (a && (b == c))

Это означает, что если a имеет истинное значение, а также значение b равнозначение c.

2 голосов
/ 11 марта 2019

Условие (a && b == c) имеет два оператора . Логический оператор И и Оператор равенства .

Операция foo && bar возвращает значение true, если оба операнда foo и bar имеют истинно значения.

foo == bar возвращает значение true, если foo равно bar.

Оператор равенства преобразует операнды, если они не одного типа,Затем применяется строгое сравнение.Если оба операнда являются объектами, тогда JavaScript сравнивает внутренние ссылки, которые равны, когда операнды ссылаются на один и тот же объект в памяти.

Если выражение содержит более одного оператора, приоритет оператора имеет огромное значение.

Приоритет оператора определяет способ синтаксического анализа операторов по отношению друг к другу.Операторы с более высоким приоритетом становятся операндами операторов с более низким приоритетом.

Оператор == имеет более высокий приоритет, чем оператор &&.Поэтому вышеупомянутое условие проверит b == c в первую очередь.Если результат равен true, а значение a истинно, то результатом условия будет true.

Оператор группировки ( ) имеет наивысший приоритет и поэтому может использоваться дляфорсировать определенный порядок операций.

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

Результат

(a && (b == c)) 

будет таким же, какрезультат

(a && b == c)

, но лучше читаемый.Конечно, вы должны изучить и знать приоритет операторов.Но если вы сомневаетесь, и особенно в очень сложной линии с большим количеством операторов, то значение, которое несколько скобок увеличивают читабельность, может легко превзойти затраты на несколько бит дополнительного кода.

...