有a&;Javascript中的逻辑运算符

有a&;Javascript中的逻辑运算符,javascript,Javascript,我想知道Javascript中是否有一个“&”逻辑运算符。我尝试在Firebug(Firefox)中运行1&0和1&0,但它都返回了0 有人告诉我C#同时接受&和double&,double更有效,因为一旦遇到false,它就会退出比较循环,但我找不到关于这方面的任何Javascript信息 有什么想法吗?没有。&是操作员&&是Javascript中唯一的逻辑AND运算符。是。Javascript兼有这两种功能 与C#中的情况完全一样,双版本&&version可以在遇到false时立即停止,而单

我想知道Javascript中是否有一个“&”逻辑运算符。我尝试在Firebug(Firefox)中运行1&0和1&0,但它都返回了0

有人告诉我C#同时接受&和double&,double更有效,因为一旦遇到false,它就会退出比较循环,但我找不到关于这方面的任何Javascript信息


有什么想法吗?

没有。
&
是操作员
&&
是Javascript中唯一的逻辑AND运算符。

是。Javascript兼有这两种功能


与C#中的情况完全一样,双版本&&version可以在遇到false时立即停止,而单版本&&version可能不会停止。

&&是Javascript中的逻辑运算符。1&&0应返回false,以便正确执行

1&0等于0

它是位运算符,不是逻辑运算符

&&表示左右运算符的逻辑AND。这意味着只有当左操作符和右操作符都解析为布尔真时,它才会返回布尔真值

&表示左右运算符的按位AND。这意味着将比较每个操作数的位,结果将是and值,而不是布尔值。如果执行
101&100
操作,则返回值为
100
。如果执行
1&0
,则返回值为
0


如果有人告诉你这两个操作符的区别仅仅在于效率,那么你就被误导了。它们有非常不同的用途。

Javascript有按位(&)和布尔(&&)运算符。在1&&0上返回0的原因是0表示false,因此1(true)和&0(false)返回false,因为两个运算符必须求值为true才能返回true

表达式
1&&0
运算符返回
0
,因为其语义不同于同一运算符的语义(好的,符号上是一样的)在其他类似C语言中

在Javascript中,
&&
运算符将其操作数强制为布尔值,但仅用于求值

e1 && e2 && e3 ...
是第一个子表达式
en
actual值,其强制布尔值为
false
。如果强制为布尔值时它们都是
true
,则结果是最后一个
en
actual值。类似地,
|
运算符解释如下表达式:

e1 || e2 || e3 ...
通过返回强制布尔值为
true
的第一个
en
actual值。如果它们都为false,则该值为最后一个actual


这些描述中隐含的一个事实是,
&&
|
一旦满足子表达式的完成条件,就停止计算它们。

您的朋友对C的看法是错误的

C#不混合逻辑运算符和位运算符,因此不能使用&where&&或反之亦然

1&0返回0

true&&false返回false


因此,如果您正在编写一个if语句,它需要一个布尔值,那么您必须使用&。如果您正在执行逐位算术,那么您需要&。

您可以在javascript中检查这一点:

&如果两个位都是1,则将每个位设置为1

示例: 5&1=1


0101&0001=0001

试试
1&&1
,它实际上会告诉您发生了什么…?1&&1返回1,而1&1返回1不是那样。我问的是单个&operator。但是为什么要返回“0”而不是“false”这是正确的,但它不返回
false
,它返回第一个表达式的实际值,当强制为布尔值时,它是
false
@James Curran,因为Javascript中的
&&
|
与C和Java中的类似运算符不同。除非使用布尔子表达式。这与
&
不完全正确。表达式
“hello”和&0
返回
0
,而不是
false
,表达式
“hello”和“world”
返回“world”,而不是
true
。我理解JavaScript的行为与我描述的不同,但我更关心逻辑和按位and之间的区别(以及它们在“大多数”语言中的行为)在任何情况下,值得注意的是JavaScript的
&
|124;
运算符返回truthy/fasley值,不一定是布尔值。它们的行为也类似于C的coalesce运算符
&
将返回第一个假值或最后一个truthy值;
|
将返回第一个truthy value.interest.Java确实允许使用
&
|
进行布尔运算,在这种情况下,它们显式存在是为了避免短路。它类似于逻辑“and”运算符,但与其他语言不同,它不生成布尔结果值,除非其操作数是布尔的。