逻辑运算符的用法
来源:互联网 发布:幽灵行动4画面优化 编辑:程序博客网 时间:2024/05/17 12:52
逻辑运算符通常用于Boolean
型(逻辑)值。这种情况,它们返回一个布尔型值。然而,&&
和||
运算符实际上返回一个指定操作数的值,因此这些运算符也用于非布尔型,它们返回一个非布尔型值。
描述
下面是逻辑运算符的说明:
&&
)expr1 &&expr2
如果expr1
能转换成false
则返回expr1
,否则返回expr2
。因此,与布尔值一起使用时,如果两个操作数都为true
时&&
返回true
,否则返回false
。逻辑或 (||
)expr1 ||expr2
如果expr1
能转换成true
则返回expr1
,否则返回expr2
。因此,与布尔值一起使用时,如果任意一个操作数为true
时||返回true
。逻辑非(!
)!expr
如果expr
能转换为true
,返回false
;
如果expr
能转换为false
,则返回true
。
如果一个值可以被转换为true
,那么这个值就是所谓的truthy,如果可以被转换为false
,那么这个值就是所谓的falsy。
能够转换为false的表达式有:
null
;NaN
;0
;- 空字符串(
""
); undefined
。
尽管 &&
和 ||
运算符能够使用非布尔值的操作数, 但它们依然被看作是布尔操作符,因为它们的返回值总是能够被转换为布尔值。
短路计算
由于逻辑表达式的运算的顺序是从左到右,也可以用以下规则进行"短路"计算:
false && (anything)
短路计算的结果为假。true || (anything)
短路计算的结果为真。
逻辑规则保证这些评估总是正确的。请注意,上述表达式中的 anything 部分未被评估,因此这样做的任何副作用都不会生效。还要注意,上述表达式的 anything 部分是任何单个逻辑表达式(如圆括号所示)。
例如,下面示例代码中的两个函数是相等的。
function shortCircuitEvaluation() { // logical OR (||) doSomething() || doSomethingElse(); // logical AND (&&) doSomething() && doSomethingElse();}function equivalentEvaluation() { // logical OR (||) var orFlag = doSomething(); if (!orFlag) { doSomethingElse(); } // logical AND (&&) var andFlag = doSomething(); if (andFlag) { doSomethingElse(); }}
由于运算符优先级的存在,下面的表达式的结果却不相同。右侧被小括号括起来的操作变成了独立的表达式。
false && true || true // 结果为 truefalse && (true || true) // 结果为 false
逻辑与(&&
)
下面的代码是 && (逻辑与) 运算符的示例.
a1=true && true // t && t 结果为 truea2=true && false // t && f 结果为 falsea3=false && true // f && t 结果为 falsea4=false && (3 == 4) // f && f 结果为 falsea5="Cat" && "Dog" // t && t 结果为 Doga6=false && "Cat" // f && t 结果为 falsea7="Cat" && false // t && f 结果为 false
逻辑或(||
)
下面的代码是 || (逻辑或) 运算符的示例.
o1=true || true // t || t 结果为 trueo2=false || true // f || t 结果为 trueo3=true || false // t || f 结果为 trueo4=false || (3 == 4) // f || f 结果为 falseo5="Cat" || "Dog" // t || t 结果为 Cato6=false || "Cat" // f || t 结果为 Cato7="Cat" || false // t || f 结果为 Cat
逻辑非(!
)
下面的代码是 !
(逻辑非) 运算符的示例.
n1=!true // !t 结果为 falsen2=!false // !f 结果为 truen3=!"Cat" // !t 结果为 false
转换规则
将 AND 转换为 OR
以下涉及布尔运算:
bCondition1 && bCondition2
总是等于:
!(!bCondition1 || !bCondition2)
将 OR 转换为 AND
以下涉及布尔运算:
bCondition1 || bCondition2
总是等于:
!(!bCondition1 && !bCondition2)
删除嵌套的小括号
由于逻辑表达式是从左往右计算的,所以通常可以按照下面的规则删除小括号。
删除嵌套的 AND
以下涉及布尔运算:
bCondition1 || (bCondition2 && bCondition3)
总是等于:
bCondition1 || bCondition2 && bCondition3
删除嵌套的 OR
以下涉及布尔运算:
bCondition1 && (bCondition2 || bCondition3)
总是等于:
!(!bCondition1 || !bCondition2 && !bCondition3)
规范
浏览器兼容
- Desktop
- Mobile
&&
)YesYesYesYesYesYesLogical OR (||
)YesYesYesYesYesYesLogical NOT (!
)YesYesYesYesYesYes参考资料
阅读全文
0 0
- 逻辑运算符的用法
- and or 逻辑运算符用法
- PHP中逻辑运算符的高效用法---&&和||
- lua中逻辑运算符and与or的用法
- lua中逻辑运算符and与or的用法
- Java语言基础逻辑运算符的基本用法
- Java的逻辑运算符
- shell的逻辑运算符
- 逻辑运算符的区别
- shell的逻辑运算符
- Java的逻辑运算符
- Java的逻辑运算符
- JS的逻辑运算符&& ||
- js的逻辑运算符
- C的逻辑运算符
- PHP的逻辑运算符$$
- 扩展的逻辑运算符
- java的逻辑运算符
- NGUI页签Tabview
- 特征选择——卡方检验(使用Python sklearn进行实现)
- 小东吖 之 java Map集合类
- 4519: [Cqoi2016]不同的最小割
- 【笔记】机器学习里的各种LOSS(L1,L2)
- 逻辑运算符的用法
- Spark+Hadoop安装注意事项
- 图像特征描述子之BRIEF
- 反射
- PowerDesigner导入Excel/CSV
- 使用GreenDao遇到的问题
- 【2017年浙江中医药大学大学生程序设计竞赛(重现赛)】A B E F G
- 产品经理不再纸上谈兵——微信公众号PK原生App
- Hibernate与MyBatis的区别