简体   繁体   中英

Is there a & logical operator in Javascript

I was wondering if there is a "&" logical operator in Javascript. I tried running 1 & 0 and 1 && 0 in Firebug(Firefox) and it returned a 0 for both.

Someone told me that C# accepts both & and double &&, double being more efficient as it will exit the comparison loop as soon as a false is encountered, but I was not able to find any info for Javascript on that.

Any ideas?

No. & is a bitwise AND operator. && is the only logical AND operator in Javascript.

The && operator returns 0 for the expression 1 && 0 because its semantics are different than those of the same operator (well, symbolically the same) in other C-like languages.

In Javascript, the && operator does coerce its operands to boolean values, but only for the purposes of evaluation. The result of an expression of the form

e1 && e2 && e3 ...

is the actual value of the first subexpression en whose coerced boolean value is false . If they're all true when coerced to boolean, then the result is the actual value of the last en . Similarly, the || operator interprets an expression like this:

e1 || e2 || e3 ...

by returning the actual value of the first en whose coerced boolean value is true . If they're all false, then the value is the actual value of the last one.

Implicit in those descriptions is the fact that both && and || stop evaluating the subexpressions as soon as their conditions for completion are met.

1 & 0 is 0.

It's a bitwise operator, not a logical operator.

&& means a logical AND of the left and right operators. This means it will return a boolean true value only if both the left and right operators resolve to boolean true.

& means a bitwise AND of the left and right operators. This means the bits of each operand will be compared and the result will be the ANDed value, not a boolean. If you do 101 & 100 the return value is 100 . If you do 1 & 0 , the return value is 0 .

You've been mislead about the meaning of the two operators if someone told you the difference was just in efficiency. They have very different uses.

Your friend is wrong about C#.

C# does not mix logical and bitwise operators, so you cannot use & where && is needed or vice versa.

1 & 0 returns 0

true && false returns false

So if you're writing an if statement, which expects a boolean, you have to use &&. And if you're doing bit-wise arithmetic, then you need &.

Yes. Javascript has both. http://www.eecs.umich.edu/~bartlett/jsops.html

Exactly as is true in C#, the double && version can stop as soon as it encounters a false, and the single & version may not.

You can check this for bitwise in javascript:

https://www.w3schools.com/js/js_bitwise.asp

& is Sets each bit to 1 if both bits are 1

Examples: 5 & 1 = 1

0101 & 0001 = 0001

&& is the logical operator in Javascript. 1 && 0 should return false so it is performing correctly.

Javascript has the bitwise (&) and boolean (&&) operators. The reason && returns a 0 on 1 && 0 is because 0 would indicate false and so 1 (true) && 0 (false) returns a false as both operators must evaluate to true to return a true

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM