零基础学JavaScript
上QQ阅读APP看书,第一时间看更新

3.8 逻辑运算符

逻辑运算符使用的是布尔操作数,在进行逻辑运算之后,返回的还是布尔值。逻辑运算符常与关系运算符结合使用,可以完成复杂的比较运算,而逻辑运算符的结果常用在if、while和for等语句中。

3.8.1 逻辑与运算符

逻辑与运算符(&&)是一个二元运算符,要求左右两个操作数的值都必须是布尔值。逻辑与运算符可以对左右两个操作数进行AND运算,只有左右两个操作数的值都为真(true)时,才会返回true。如果其中一个或两个操作数的值为假(false),其返回值都为false。表3.1为逻辑与运算符返回的结果表。

表3.1 逻辑与运算符结果表

逻辑与运算符的运算过程比较复杂,通常JavaScript会对逻辑与运算符左边的操作数进行运算,如果左边的操作数的值为false,那么JavaScript就会直接返回false,而不再对右边的操作数进行运算。逻辑与运算符左边的操作数的值为true,JavaScript才会对逻辑与运算符右边的操作数进行运算。如果右边的操作数的值为true,JavaScript将返回true,否则返回false。请看以下代码:


if (x==y && y==z)
{
 a = true;
}
else
{
 a = false;
}

在以上代码中,当x不等于y时,JavaScript不再去判断y是否等于z,而是直接将false值赋给变量a。只有当x等于y时,JavaScript才会去判断y是否等于z,并且只有在x等于y,y等于z两种情况同时成立时,才会将true值赋给变量a。请再看以下代码:


z = 2
if (x==y && (z++ == 3))
{
 a = true;
}
else
{
 b = false;
}

在以上代码中,“++”是一个递增运算符,可以将变量y的值加1。在x不等于y的情况下,JavaScript不会对逻辑与右侧的操作数进行运算,此时z的值还是等于2;而在x等于y的情况下,JavaScript才会对逻辑与右侧的操作数进行运算,此时z的值将会等于3。这种情况是必须要注意的。

3.8.2 逻辑或运算符

逻辑或运算符(||)是一个二元运算符,要求左右两个操作数的值都必须是布尔值。逻辑或运算符可以对左右两个操作数进行OR运算,只有左右两个操作数的值都为假(false)时,才会返回false。如果其中一个或两个操作数的值为真(true),其返回值都为true。表3.2为逻辑或运算符返回的结果表。

表3.2 逻辑或运算符结果表

与逻辑与运算符类似,逻辑或运算符的运算过程也比较复杂,通常JavaScript会对逻辑或运算符左边的操作数进行运算,如果左边的操作数的值为true,那么JavaScript就会直接返回true,而不再对右边的操作数进行运算。如果逻辑或运算符左边的操作数的值为false,JavaScript才会对逻辑或运算符右边的操作数进行运算。如果右边的操作数的值为false,JavaScript将返回false,否则返回true。

3.8.3 逻辑非运算符

逻辑非运算符(!)是一个一元运算符,要求操作数放在运算符之后,并且操作数的值必须是布尔型。逻辑非运算符可以对操作数进行取反操作,如果运算数的值为true,则取反操作之后的结果为false;如果运算数的值为false,则取反操作之后的结果为true。表3.3为逻辑非运算符返回的结果表。

表3.3 逻辑非运算符结果表