javascript中短路语法初探
前言
首先我们先了解什么是逻辑运算符
&& 逻辑与运算
|| 逻辑或运算
! 逻辑非运算
正统来说,参与逻辑运算的是boolean和boolean,得到的结果也是boolean
&& 逻辑与,“且”
值按照真值表来定
a && b | ||
---|---|---|
a | b | 结果 |
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
“都真才真”,“有假就假”。
命题1:“地球是圆的” 真的
命题2:“Adil很帅” 真的
命题1 且
命题2 真的
命题1:“1+1=3” 假的
命题2:“地球是方的” 假的
命题1 且
命题2 假的
1 | //逻辑运算符 |
|| 逻辑或,“或者”
a || b | ||
---|---|---|
a | b | 结果 |
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
“有真就真”,“都假才假”
1 | console.log(true || true); //t |
!就是“逻辑非”,相反的
1 | console.log(!true); //f |
运算顺序是非、与、或
1 | true || false && !true || false; |
短路语法
如果计算一个且运算的时候,比如a && b,a如果就是一个false,那么就不会管b是什么,直接输出false就行了,等于说直接输出a。
如果计算一个且运算的时候,比如 a && b ,a如果就是一个true,那么也不用管b是什么,直接把b当做结果输出就行了。
也就是说,本质上计算机进行a&&b运算的时候,不是在进行逻辑分析,这小子就想着要么扔a,要么扔b。如果a是负性的,那么直接扔出a;如果a是正性的,直接扔出b。
短路语法: 要么a被短路,要么b被短路
负性的:false,null, 0, NaN, 空字符串(“”),undefined
正性的:除了上面的,全是正性的。
1 | false && 8 //false 因为计算机发现,且运算a已经是false了,直接输出false |
计算机发现a是真,那么扔a;如果a是假,那么扔b
1 | 0 || 18 //18 前面假,扔后面 |
最后重点
a&&b, 计算机要么执行a要么执行b。a真执行b,a假执行a;
a||b, 计算机要么执行a要么执行b。a真执行a,a假执行b。
-
感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Adil
评论
✅ 你无需删除空行,直接评论以获取最佳展示效果