加深对AND运算符的理解
Increasing understanding of the AND operator
我一直在使用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
, a6
和a7
。
我无法理解两个字符串a5="Cat" && "Dog"
如何评估true && true returns Dog
我也无法理解为什么字符串"Cat"作为a6=false && "Cat" // f && t returns false
当计算为布尔值时,所有非空字符串都是true
。
在a6=false && "Cat"
中,字符串"Cat"根本不被求值,因为左边是false
。
首先让我们看看a5:
a5="Cat" && "Dog"
返回dog
, mdn-docs声明AND(&&):
返回expr1,如果它可以转换为false;否则,返回expr2。因此,与布尔值一起使用时,&&如果两个操作数都为真,则返回真;否则返回false。
由于非空字符串不能转换为false,它将返回dog
,如果你改变dog
和cat
的顺序,它当然会返回cat
。
在a6 false中,是false,因此它返回false
,因为:
返回expr1,如果它可以转换为false…
在a7中,cat
为真,因此它继续到下一个为假的表达式,因此返回假。
…否则,返回exp2
在a && b
语句中先求a
,如果a
为true
,则再求b
。
-
(a5 = "Cat")
返回"Cat"
,即true
(只有空字符串是false
),因此返回Dog
。 -
(a6 = false)
返回false
,因此不计算第二个"Cat"
部分。 -
(a7 = "Cat")
为true
,因此返回第二个false
部分。
相关文章:
- 这是什么 ==- javascript 运算符
- jQuery/JS包含运算符或类似运算符
- Javascript逻辑运算符和字符串/数字
- 模运算符前的双水平线
- Selenium WebDriver and JavaScript change
- jQuery's trim()的前缀为not运算符
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 分析服务器上的查询AND运算符
- 为什么这个while循环不能使用AND逻辑运算符
- 如何在XSLT文档中的javascript中使用AND运算符
- AND 和 OR 运算符、正则表达式和值长度
- 布尔表达式-与AND、OR逻辑运算符混淆以及它们的工作方式
- Javascript 如何使用带括号的 and/or 运算符
- 我应该使用 if-then-else 或 and or 运算符来检查 Javascript 中的空值吗?
- 使用AND运算符进行Mongoose文本搜索
- 循环对象以使用javascript/Jquery创建AND运算符
- jQuery-将两个事件绑定到一个AND运算符
- 一个AND和一个OR的运算符优先级
- 加深对AND运算符的理解