有什么区别?“&”和“ &&”运算符的用途是什么?

时间:2019-06-26 03:05:21

标签: javascript bitwise-operators logical-operators

我有两个条件可以验证“ a”等于零并且“ b”小于5,两者的行为相同,但是使用不同的运算符,它们之间是否有真正的区别?

var a = 0;
var b = 3;

if (!a & (b < 5)) {
}

if (!a && b < 5) {
}

1 个答案:

答案 0 :(得分:2)

主要区别在于&运算符是按位运算符,而&&运算符是逻辑运算符。

按位运算符对位进行运算并执行“逐位”运算,它们应用于一个或两个操作数的位。 &代表按位AND运算-其中A和B代表两个输入;为了使C为真,两个输入都必须为真。

enter image description here

例如,在您提供的示例中,您有:

if(0 & 1){
}

在0和1上作为输入的按位AND的结果为0(假),因为两个输入都必须为true才能使输出为true。

&&运算符是逻辑运算符,用于根据多个条件进行决策。它可以应用于一个或两个操作数,每个操作数可以为true或false。

if (!a && b < 5) {
}

以上内容仍为false,因为要执行if语句中的代码必须同时满足两个条件。除此之外,使用&&运算符将(取决于语言)短路,这意味着if的第二个条件仅在结果不是由第一个条件确定的情况下才进行评估。

因此,一旦发现a为零(假),该表达式将失败,因为评估第二个表达式没有意义,因为第一个表达式必须为true。这是另一个差异,因为按位&运算符不会短路。