Ответ 1
Нет. &
- это побитовый И оператор. &&
является единственным логическим оператором AND в Javascript.
Мне было интересно, есть ли "&". логический оператор в Javascript. Я попытался запустить 1 и 0 и 1 && 0 в Firebug (Firefox), и он возвратил 0 для обоих.
Кто-то сказал мне, что С# принимает и то и другое, и double & &, двойное более эффективное, поскольку оно выйдет из цикла сравнения, как только встретится ложь, но я не смог найти какую-либо информацию для Javascript на этом.
Любые идеи?
Нет. &
- это побитовый И оператор. &&
является единственным логическим оператором AND в Javascript.
Оператор &&
возвращает 0
для выражения 1 && 0
, потому что его семантика отличается от семантики того же оператора (ну, символически то же самое) на других языках, подобных C.
В Javascript оператор &&
принуждает свои операнды к логическим значениям, но только для целей оценки. Результат выражения вида
e1 && e2 && e3 ...
- значение фактическое первого подвыражения en
, чье принудительное логическое значение false
. Если они все true
при принуждении к логическому результату, то результатом является фактическое значение последнего en
. Точно так же оператор ||
интерпретирует такое выражение:
e1 || e2 || e3 ...
возвращая значение фактическое первого en
, чье принудительное логическое значение true
. Если они все ложные, то значение представляет собой фактическое значение последнего.
В этих описаниях подразумевается тот факт, что как &&
, так и ||
перестают оценивать подвыражения, как только выполняются их условия для завершения.
1 и 0 равно 0.
Это побитовый оператор, а не логический оператор.
& & означает логический И левого и правого операторов. Это означает, что он вернет логическое истинное значение только в том случае, если оба левого и правого операторов разрешат логическое значение true.
& означает побитовое И левого и правого операторов. Это означает, что бит каждого операнда будет сравниваться, и результатом будет значение ANDed, а не логическое. Если вы выполняете 101 & 100
, возвращаемое значение 100
. Если вы выполняете 1 & 0
, возвращаемое значение равно 0
.
Вы были введены в заблуждение относительно смысла двух операторов, если кто-то сказал вам, что разница была только в эффективности. У них очень разные виды использования.
Да. У Javascript есть и то, и другое. http://www.eecs.umich.edu/~bartlett/jsops.html
Точно так же, как и в С#, double && версия может остановиться, как только она встретит ложь, а сингл и версия не могут.
Ваш друг ошибается в отношении С#.
С# не смешивает логические и побитовые операторы, поэтому вы не можете использовать и где && или наоборот.
1 и 0 возвращает 0
true && false возвращает false
Итак, если вы пишете оператор if, который ожидает логическое значение, вы должны использовать & &. И если вы делаете бит-мудрую арифметику, тогда вам нужно &.
& & является логическим оператором в Javascript. 1 && 0 должен возвращать значение false, чтобы оно выполнялось правильно.
Javascript имеет побитовые (&) и boolean (&) операторы. Причина && возвращает 0 на 1 && 0 - это потому, что 0 будет указывать ложь и так 1 (истина) && & 0 (false) возвращает false, поскольку оба оператора должны оценивать true, чтобы возвращать true