Имеет ли значение приоритет оператора для && и == в javascrtipt?
-
22-08-2019 - |
Вопрос
Более конкретно, существует ли набор значений (a, b и c), для которых приоритет оператора имеет значение в операторе:
var value = (a && b == c);
(за исключением NaN).
Решение
ДА
js> false && true == false
false
js> (false && true) == false
true
С тех пор как ==
имеет более высокий приоритет, чем &&
, первый анализируется как false && (true == false)
, что эквивалентно false && false
, и , таким образом , оценивает false
.Второе эквивалентно false == false
, который является true
Другие советы
Язык проанализирован таким образом , что ваше утверждение эквивалентно (a && (b == c))
.Оператор равенства всегда будет выполняться перед &&
, ||
и другие логические операторы.Вы можете ознакомиться с мельчайшими подробностями здесь.
Ага. ==
связывает более крепко , чем &&
, итак , то , что у вас есть , связывается как
var val = a && ( b == c)
Видишь здесь.Итак a==0
, b==1
и c==0
является ложным, в то время как (a&&b)==c
это правда.
(Исправлена опечатка.Черт возьми.)