JavaScript 邏輯或和與的其他用法
首先先要了解什么是“短路效應(yīng)”
短路效應(yīng)
通俗一點(diǎn)說肉迫,可以理解為沒必要繼續(xù)算了
- || 或運(yùn)算 大家都知道當(dāng)兩邊只要有一邊為真,那么表達(dá)式為真
- && 與(且)運(yùn)算 當(dāng)兩邊只要有一邊為假稿黄,那么表達(dá)式為假
如果||的左邊表達(dá)式的值為真(或者&&左邊表達(dá)式為假)喊衫,那么右邊表達(dá)式根本不會執(zhí)行,這就是短路
表達(dá)式值
剛開始學(xué)的時(shí)候很容易跟其他語言搞混,以為最后的結(jié)果只能是true和false,這是不對的
一句話來總結(jié)就是:<u>最后執(zhí)行到哪邊杆怕,它就是哪邊</u>族购。
如果還感覺有點(diǎn)懵的話,繼續(xù)看看他的運(yùn)算步驟
運(yùn)算步驟
他真正的運(yùn)算步驟如下,我們有a||b
- 首先我們執(zhí)行a,如果a的值為true,直接短路陵珍,那么表達(dá)式的值直接為a的值寝杖,后面不執(zhí)行
- 如果a的值為false,那么開始執(zhí)行b,不管b為什么值,表達(dá)式最后的值都等于b的值
1||任意值 //結(jié)果都是1
0||任意值 //結(jié)果為任意值
且(與)運(yùn)算同理,我們有a&&b
首先我們執(zhí)行a,如果a的值為false,直接短路撑教,那么表達(dá)式的值直接為a的值朝墩,后面不執(zhí)行
-
如果a的值為true,那么開始執(zhí)行b,不管b為什么值,表達(dá)式最后的值都等于b的值
0&&任意值 //結(jié)果為0 1&&任意值 //結(jié)果為任意值
用法
|| 常用來做一些兼容性的問題
let a = str || '' //如果沒有獲取到str那就取空字符串
&& 可以當(dāng)一個(gè)簡易的if,不能完全代替if
flag && alert('哈哈')
//可以理解為
if(flag){
alert('哈哈')
}