JavaScript 逻辑或和与的其他用法
首先先要了解什么是“短路效应”
短路效应
通俗一点说,可以理解为没必要继续算了
- || 或运算 大家都知道当两边只要有一边为真,那么表达式为真
- && 与(且)运算 当两边只要有一边为假,那么表达式为假
如果||的左边表达式的值为真(或者&&左边表达式为假),那么右边表达式根本不会执行,这就是短路
表达式值
刚开始学的时候很容易跟其他语言搞混,以为最后的结果只能是true和false,这是不对的
一句话来总结就是:<u>最后执行到哪边,它就是哪边</u>。
如果还感觉有点懵的话,继续看看他的运算步骤
运算步骤
他真正的运算步骤如下,我们有a||b
- 首先我们执行a,如果a的值为true,直接短路,那么表达式的值直接为a的值,后面不执行
- 如果a的值为false,那么开始执行b,不管b为什么值,表达式最后的值都等于b的值
1||任意值 //结果都是1
0||任意值 //结果为任意值
且(与)运算同理,我们有a&&b
首先我们执行a,如果a的值为false,直接短路,那么表达式的值直接为a的值,后面不执行
-
如果a的值为true,那么开始执行b,不管b为什么值,表达式最后的值都等于b的值
0&&任意值 //结果为0 1&&任意值 //结果为任意值
用法
|| 常用来做一些兼容性的问题
let a = str || '' //如果没有获取到str那就取空字符串
&& 可以当一个简易的if,不能完全代替if
flag && alert('哈哈')
//可以理解为
if(flag){
alert('哈哈')
}