在JavaScript中,&
和&&
有什么不同?
示例代码:
var first = 123;
var second = false;
var third = 456;
var fourth = "abc";
var fifth = true;
alert(first & second); // 0
alert(first & third); // 72
alert(first & fourth); // 0
alert(first & fifth); // 1
alert(first && second); // false
alert(first && third); // 456
alert(first && fourth); // abc
alert(first && fifth); // true
看起来&&
是一个逻辑and
,如果两者都是true
,它总是给我第二个值。
但是什么是&
呢?
(顺便说一下,在Python语言中,&&
似乎是and
;在Python语言中,&
似乎是&
)
发布于 2011-09-05 23:40:49
&
是按位的"and“。这意味着,如果您将两个数字转换为二进制,则结果是一个在两个数字都具有1
的位置上具有1
数字的数字。
100011 //35
& 111001 //57
---------
100001 //35 & 57 == 33
发布于 2012-09-20 10:07:08
要确定放在一起的两个布尔值是真还是假,如果您想同时检查它们(如网页上的验证),您可以使用&
运算符。&
是按位AND的。
对于&&
运算符,一旦它发现第一个值为假,它将结束求值,并且不检查第二个值。
发布于 2019-06-01 13:24:01
在所有这些高尚而详细的见解中,他们大多忽略了一个事实,即只有单个&才能工作的条件评估。一个实用的外行的答案解决了我对多个链接&& each !==到一个条件的IF语句字符串的困惑,这导致了失败,并且需要合法地使用单个&。我感谢Jake (和Russ)不公平地否决了他们的答案,因为如果有不止一个&& ==,它已经停止了它的评估,并在找到第一个评估后不再继续进行==!。在第一次评估显示之后&&它认为它的工作已经完成了!==例如。假。我失败的代码是
IF ((sessionStorage.myLable !== "LableStringA") && (sessionStorage.myLable !== "LableStringB") && (sessionStorage.myLableZ !== "LableStringA") && (sessionStorage.myLableZ !== "LableStringB")) { ...)
在这里,正确地用一个&替换&&,这实际上是在现实世界中,从技术上讲也是正确的答案。再次感谢Jake (和Russ)对代码的洞察和理解。
https://stackoverflow.com/questions/7310109
复制相似问题