Имеет ли значение приоритет оператора для && и == в javascrtipt?

StackOverflow https://stackoverflow.com/questions/687684

Вопрос

Более конкретно, существует ли набор значений (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 это правда.

(Исправлена опечатка.Черт возьми.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top