A||B
? 如果A能轉(zhuǎn)換成true則返回A,否則返回B ?因此,在boolean環(huán)境(在if的條件判斷中)中使用時, 二者操作結(jié)果中只要有一個為true,返回true;二者操作結(jié)果都為false時返回false.
只有 0、null、undefined、空字符串 為假,其余都是真
例如:
o1=true || true? ? ? // t || t 結(jié)果為 true
o2=false || true? ? ? // f || t 結(jié)果為 true
o3=true || false? ? ? // t || f 結(jié)果為 true
o4=false || (3 == 4)? // f || f 結(jié)果為 false
o5="Cat" || "Dog"? ? // t || t 結(jié)果為 Cat
o6=false || "Cat"? ? // f || t 結(jié)果為 Cat
o7="Cat" || false? ? // t || f 結(jié)果為 Cat
實(shí)際項(xiàng)目中
//1、在if判斷中
//if(1==1 || 2==3){}//->兩個條件中只要有一個條件為真,整體就為真 "或者"
//if(1==1 && 2==3){}//->兩個條件中只有條件都為真,整體就為真 "并且"
//2、用作函數(shù)傳參時參數(shù)的判斷 ? 是兩個值求其中一個的時候【下面求和就是一個例子】
//1||2 ->1 "邏輯或" 首先看左邊的值是真還是假,如果是真,返回的是左邊的值,如果是假返回的是右邊的值
//1&&2 ->2 "邏輯與" 首先看左邊的值是真還是假,如果是真,返回的是右邊的值,如果是假返回的是左邊的值
3、用作對象的判斷
let ?params={
pageNo:page||query.pageNo,
pageSize:query.pageSize
};
//如何看真假?
//只有 0、null、undefined、空字符串 為假,其余都是真
//我們在真實(shí)項(xiàng)目中應(yīng)用邏輯或進(jìn)行數(shù)據(jù)的初始化
//需求:求兩個數(shù)的和,如果第二個數(shù)沒有傳遞的話,我們默認(rèn)加零
function sum(num1, num2) {
//? ? ? ? if (typeof num2 === "undefined") {//->說明num2沒有傳遞值,默認(rèn)值是undefined,此時我們讓它的值變?yōu)?
//? ? ? ? ? ? num2 = 0;
//? ? ? ? }
num2 = num2 || 0;//->undefined||0 ->num2=0 等價于上面的判斷
console.log(num1 + num2);
}
//sum(100);//->num1=100 num2=undefined
//3、當(dāng)||和&&同時出現(xiàn)的時候,&&的優(yōu)先級大于||
console.log(0 || 1 && 2 || 3);
//1 && 2 ->2
//0 || 2 ->2
//2 || 3 ->2