Условие (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)
, но лучше читаемый.Конечно, вы должны изучить и знать приоритет операторов.Но если вы сомневаетесь, и особенно в очень сложной линии с большим количеством операторов, то значение, которое несколько скобок увеличивают читабельность, может легко превзойти затраты на несколько бит дополнительного кода.