目录
前言
通常我们平时的布尔运算的逻辑运算,都是布尔值之间的运算,true&&false == false
那如果是 231 && 789 的这种值的运算,或者是表达式参与逻辑运算的呢???那结果是231 还是789呢???
在逻辑运算中,有一个非常重要的特点:我们叫作短路运算或者叫逻辑中断的
短路运算的原理:当有多个表达式(值)时候,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值
比如在公司,工位一排的电脑连着电在工作,突然其中一台电脑的线路短路了,其他的电脑和这条线路上的电器就不工作了,这就叫作短路
例如上面提到的231 && 789,左边的表达式已经可以确定结果了,所以就不再继续运算了,那到底短路运算改如果运算呢???我从逻辑与和或两个方面来进行分析
1.逻辑与
- 语法:表达式1&&表达式2
- 如果第一个表达式的值为真,则返回表达式2
- 如果第一个表达式的值为假,则返回表达式1
举例1
console.log(231 && 789)
知道了语法规则,我们看看上面提到的例子,看看运行结果
分析:如果第一个表达式的值为真,则返回表达式2
举例2
console.log(0 && 789)
分析:如果第一个表达式的值为假,则返回表达式1
举例3
还可以加入表达式
console.log(0 && 2 + 1&& 3* 9999)
分析:如果第一个表达式的值为假,则返回表达式1
因为第一个值为零了,短路了,后面的就不再执行了,所以结果为表达式1,打印结果就是0
在布尔运算中,如果有空的或者否定的为假,其余的为真
- 零(0)是为假,
- 空字符串('')也是为假,
- 还有几个特殊的 null、undefined、NaN也是为假
举例4
console.log( ' ' && 2 + 1&& 3* 9999 )
在上面逻辑运算中加入一个空的字符串,那毫无疑问,空字符串就是为假的咯,不管后面是什么都是不参与运算了,返回的就是一个空的字符串,如下图运行结果
举例5
console.log(321 && 3* 9999)
分析:如果第一个表达式的值为真,则返回表达式2
2.总结
- 如果第一个表达式的值为真,则返回表达式2
- 如果第一个表达式的值为假,则返回表达式1