Есть ли логический оператор в Javascript

Мне было интересно, есть ли "&". логический оператор в Javascript. Я попытался запустить 1 и 0 и 1 && 0 в Firebug (Firefox), и он возвратил 0 для обоих.

Кто-то сказал мне, что С# принимает и то и другое, и double & &, двойное более эффективное, поскольку оно выйдет из цикла сравнения, как только встретится ложь, но я не смог найти какую-либо информацию для Javascript на этом.

Любые идеи?

Ответы

Ответ 1

Нет. & - это побитовый И оператор. && является единственным логическим оператором AND в Javascript.

Ответ 2

Оператор && возвращает 0 для выражения 1 && 0, потому что его семантика отличается от семантики того же оператора (ну, символически то же самое) на других языках, подобных C.

В Javascript оператор && принуждает свои операнды к логическим значениям, но только для целей оценки. Результат выражения вида

e1 && e2 && e3 ...

- значение фактическое первого подвыражения en, чье принудительное логическое значение false. Если они все true при принуждении к логическому результату, то результатом является фактическое значение последнего en. Точно так же оператор || интерпретирует такое выражение:

e1 || e2 || e3 ...

возвращая значение фактическое первого en, чье принудительное логическое значение true. Если они все ложные, то значение представляет собой фактическое значение последнего.

В этих описаниях подразумевается тот факт, что как &&, так и || перестают оценивать подвыражения, как только выполняются их условия для завершения.

Ответ 3

1 и 0 равно 0.

Это побитовый оператор, а не логический оператор.

& & означает логический И левого и правого операторов. Это означает, что он вернет логическое истинное значение только в том случае, если оба левого и правого операторов разрешат логическое значение true.

& означает побитовое И левого и правого операторов. Это означает, что бит каждого операнда будет сравниваться, и результатом будет значение ANDed, а не логическое. Если вы выполняете 101 & 100, возвращаемое значение 100. Если вы выполняете 1 & 0, возвращаемое значение равно 0.

Вы были введены в заблуждение относительно смысла двух операторов, если кто-то сказал вам, что разница была только в эффективности. У них очень разные виды использования.

Ответ 4

Да. У Javascript есть и то, и другое. http://www.eecs.umich.edu/~bartlett/jsops.html

Точно так же, как и в С#, double && версия может остановиться, как только она встретит ложь, а сингл и версия не могут.

Ответ 5

Ваш друг ошибается в отношении С#.

С# не смешивает логические и побитовые операторы, поэтому вы не можете использовать и где && или наоборот.

1 и 0 возвращает 0

true && false возвращает false

Итак, если вы пишете оператор if, который ожидает логическое значение, вы должны использовать & &. И если вы делаете бит-мудрую арифметику, тогда вам нужно &.

Ответ 6

& & является логическим оператором в Javascript. 1 && 0 должен возвращать значение false, чтобы оно выполнялось правильно.

Ответ 7

Javascript имеет побитовые (&) и boolean (&) операторы. Причина && возвращает 0 на 1 && 0 - это потому, что 0 будет указывать ложь и так 1 (истина) && & 0 (false) возвращает false, поскольку оба оператора должны оценивать true, чтобы возвращать true