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.