加深对AND运算符的理解

Increasing understanding of the AND operator

本文关键字:运算符 AND      更新时间:2023-09-26

我一直在使用MDN文档-逻辑运算符作为参考框架来理解逻辑与运算符。

我已经理解了这些代码示例中的大部分,特别是下面所示的前4个:
a1=true && true       // t && t returns true
a2=true && false      // t && f returns false
a3=false && true      // f && t returns false
a4=false && (3 == 4)  // f && f returns false
a5="Cat" && "Dog"     // t && t returns Dog
a6=false && "Cat"     // f && t returns false
a7="Cat" && false     // t && f returns false

然而,我有问题理解a5, a6a7

我无法理解两个字符串a5="Cat" && "Dog"如何评估true && true returns Dog

我也无法理解为什么字符串"Cat"作为a6=false && "Cat" // f && t returns false

的一部分评估为true

当计算为布尔值时,所有非空字符串都是true

a6=false && "Cat"中,字符串"Cat"根本不被求值,因为左边是false

首先让我们看看a5:

a5="Cat" && "Dog" 

返回dog, mdn-docs声明AND(&&):

返回expr1,如果它可以转换为false;否则,返回expr2。因此,与布尔值一起使用时,&&如果两个操作数都为真,则返回真;否则返回false。

由于非空字符串不能转换为false,它将返回dog,如果你改变dogcat的顺序,它当然会返回cat

在a6 false中,是false,因此它返回false,因为:

返回expr1,如果它可以转换为false…

在a7中,cat为真,因此它继续到下一个为假的表达式,因此返回假。

…否则,返回exp2

a && b语句中先求a,如果atrue,则再求b

  1. (a5 = "Cat")返回"Cat",即true(只有空字符串是false),因此返回Dog
  2. (a6 = false)返回false,因此不计算第二个"Cat"部分。
  3. (a7 = "Cat")true,因此返回第二个false部分。