JavaScript 邏輯與運算
■知識點
邏輯與運算(&&),只有兩個操作數(shù)都為true時,才返回true,否則返回false。邏輯與是一種短路邏輯:如果左側(cè)表達式為false,則直接短路返回結(jié)果,不再運算右側(cè)表達式。運算邏輯如下。
第1步,計算第1個操作數(shù)(左側(cè)表達式)的值。
第2步,檢測第1個操作數(shù)的值。如果左側(cè)表達式的值可以轉(zhuǎn)換為false (null、underfilled、NaN、 0、""、false),那么就會結(jié)束運算,直接返回第1個操作數(shù)的值。停止后面的操作步驟。
第3步,如果第1個操作數(shù)可以轉(zhuǎn)換為tme,則計算第2個操作數(shù)(右側(cè)表達式)的值。
第4步,返回第2個操作數(shù)的值。
■實例設計
下面的代碼利用邏輯與運算檢測變量并進行初始化。
var user; //定義變量
( ! user &&console.log("沒有賦值")); //返回提示信息“沒有賦值”
等效于:
var user; //定義變量
if( ! user){ //條件判斷
console.log("變量沒有賦值");
}
注意:
如果變量usei?值為0或空字符串等假值,轉(zhuǎn)換為布爾值時,則為false,那么當變量賦值之后,依然提示變量沒有賦值。因此,在設計時必須確保邏輯與左側(cè)的表達式返回值是一個可以預測的值。
var user = 0; //定義并初始化變蛩
( ! user &&console. log ("變量沒有賦值")); //返回提示信息??變M沒有賦值"
同時,注意右側(cè)表達式不應該包含賦值、遞增、遞減和函數(shù)調(diào)用等有效運算,因為當左側(cè)表達式為false時,則直接跳過右側(cè)表達式,會給后面的運算帶來潛在影響。
使用邏輯與運算符可以代替設計多重分支結(jié)構(gòu)。
var n = 3;
(n == 1) &&console.log(1);
(n == 2) &&console.log(2);
(n == 3) &&console.log(3);
(! n) &&console.log("null");
上面的代碼等效于下面多重分支結(jié)構(gòu):
var n = 3; //定義變量
switch (n){ //指定判斷的變量
case 1 : //條件1
console.log(1);
break; //結(jié)束結(jié)構(gòu)
case 2 : //條件2
console.log (2);
break; //結(jié)束結(jié)構(gòu)
case 3 : //條件3
console.log(3);
break; //結(jié)束結(jié)構(gòu)
default : //默認條件
console.log ("null");
}
點擊加載更多評論>>