我想知道是否有“&” Javascript中的逻辑运算符。我试过跑1& 0和1&&在Firebug(Firefox)中为0,两者都返回0。
有人告诉我C#接受& amp;和double&&,double更高效,因为一遇到false就会退出比较循环,但我无法在其上找到Javascript的任何信息。
有什么想法吗?
答案 0 :(得分:10)
没有。 &
是bitwise AND运营商。 &&
是Javascript中唯一的逻辑AND运算符。
答案 1 :(得分:5)
&&
运算符为表达式0
返回1 && 0
,因为它的语义与其他类C语言中的相同运算符(好像,符号相同)的语义不同。 / p>
在Javascript中,&&
运算符 将其操作数强制转换为布尔值,但仅用于评估。表达式
e1 && e2 && e3 ...
是第一个子表达式 en
的实际值,其强制布尔值为false
。如果强制转换为布尔值时全部为true
,则结果为最后 en
的实际值。同样,||
运算符会解释如下表达式:
e1 || e2 || e3 ...
返回其强制布尔值为en
的第一个 true
的实际值。如果它们都是假的,那么该值就是最后一个值的实际值。
这些描述中隐含的事实是&&
和||
一旦满足完成条件就停止评估子表达式。
答案 2 :(得分:2)
1& 0为0。
这是一个按位运算符,而不是逻辑运算符。
&安培;&安培;表示左右运算符的逻辑AND。这意味着只有当左侧和右侧运算符都解析为布尔值true时,它才会返回布尔值true。
&安培;表示左右运算符的按位AND。这意味着将比较每个操作数的位,结果将是ANDed值,而不是布尔值。如果您执行101 & 100
,则返回值为100
。如果您执行1 & 0
,则返回值为0
。
如果有人告诉你差异只是效率,那你就误导了两家运营商的意思。它们的用途非常不同。
答案 3 :(得分:1)
是。 Javascript都有。 http://www.eecs.umich.edu/~bartlett/jsops.html
与C#完全一样,双&&版本可以在遇到错误时立即停止,并且单个&版本可能没有。
答案 4 :(得分:1)
你的朋友对C#有误。
C#不会混合逻辑和按位运算符,因此您无法使用&在哪里&&需要,反之亦然。
1& 0返回0
true&& false返回false
因此,如果您正在编写一个需要布尔值的if语句,则必须使用&&amp ;.如果你正在做逐位算术,那么你需要&。
答案 5 :(得分:1)
您可以在javascript中按位检查它:
https://www.w3schools.com/js/js_bitwise.asp
&is如果每个位均为1,则将每个位设置为1
示例: 5&1 = 1
0101&0001 = 0001
答案 6 :(得分:0)
&安培;&安培;是Javascript中的逻辑运算符。 1&& 0应返回false,以便正确执行。
答案 7 :(得分:0)
Javascript具有按位(&)和布尔(&&)运算符。原因&&在1&&上返回0 0是因为0表示假,因此1(真)&& 0(false)返回false,因为两个运算符必须求值为true才能返回true