Имеет ли значение приоритет оператора для && и == в javascrtipt? - PullRequest
0 голосов
/ 27 марта 2009

Более конкретно, есть ли набор значений (a, b и c), для которых приоритет оператора имеет значение в выражении:

var value = (a && b == c);

(за исключением NaN).

Ответы [ 3 ]

3 голосов
/ 27 марта 2009

есть

js> false && true == false
false
js> (false && true) == false
true

Поскольку == имеет более высокий приоритет, чем &&, первый анализируется как false && (true == false), что эквивалентно false && false и, следовательно, оценивается как false. Второй эквивалент false == false, что составляет true

2 голосов
/ 27 марта 2009

Да. == связывается более плотно, чем &&, поэтому то, что у вас есть, связывается как

var val = a && ( b == c)

См. здесь . Так что a==0, b==1 и c==0 ложно, а (a&&b)==c верно.

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

2 голосов
/ 27 марта 2009

Язык анализируется так, что ваше утверждение эквивалентно (a && (b == c)). Оператор равенства всегда будет выполняться до &&, || и других логических операторов. Вы можете найти мельчайшие детали здесь .

...