#javascript
#javascript
Вопрос:
Итак, я работал над своим проектом, когда столкнулся с такой проблемой:
var one = 1;
var two = 2;
var three = 7;
if (one === 1 || two === 2 amp;amp; three === 3) {
console.log("ok"); // prints out ok
}
Я довольно смущен этим, так как я не думаю, что он должен печатать «ok». Я думал, что, поскольку условие после оператора amp;amp; было ложным, оно не должно выполняться, но я, очевидно, ошибаюсь. Кто-нибудь может пояснить, почему это работает?
Комментарии:
1. Приоритет оператора
amp;amp;
превышен||
, а не только слева направо.
Ответ №1:
В Javascript операторы не просто вычисляются слева направо, некоторые операторы имеют больший приоритет, чем другие. Операторы с более высоким приоритетом (в данном случае amp;amp;
оператор с приоритетом 13) будут оцениваться раньше других ( ||
с приоритетом 14).
Для вашего конкретного случая вам необходимо сгруппировать ваши условные выражения, чтобы добиться нужной функциональности:
if ((one === 1 || two === 2) amp;amp; three === 3) {
console.log("ok"); // prints out ok
}
Комментарии:
1. Хорошо, это имеет смысл. Спасибо.