位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 邏輯與運(yùn)算

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-23

■知識(shí)點(diǎn)

    邏輯與運(yùn)算(&&),只有兩個(gè)操作數(shù)都為true時(shí),才返回true,否則返回false。邏輯與是一種短路邏輯:如果左側(cè)表達(dá)式為false,則直接短路返回結(jié)果,不再運(yùn)算右側(cè)表達(dá)式。運(yùn)算邏輯如下。

    第1步,計(jì)算第1個(gè)操作數(shù)(左側(cè)表達(dá)式)的值。

    第2步,檢測第1個(gè)操作數(shù)的值。如果左側(cè)表達(dá)式的值可以轉(zhuǎn)換為false (null、underfilled、NaN、 0、""、false),那么就會(huì)結(jié)束運(yùn)算,直接返回第1個(gè)操作數(shù)的值。停止后面的操作步驟。

    第3步,如果第1個(gè)操作數(shù)可以轉(zhuǎn)換為tme,則計(jì)算第2個(gè)操作數(shù)(右側(cè)表達(dá)式)的值。

    第4步,返回第2個(gè)操作數(shù)的值。

■實(shí)例設(shè)計(jì)

下面的代碼利用邏輯與運(yùn)算檢測變量并進(jìn)行初始化。

var user;                                                 //定義變量

( ! user &&console.log("沒有賦值"));     //返回提示信息“沒有賦值”

等效于:

var user;                   //定義變量

if( ! user){                 //條件判斷

    console.log("變量沒有賦值");

}

注意:

    如果變量usei?值為0或空字符串等假值,轉(zhuǎn)換為布爾值時(shí),則為false,那么當(dāng)變量賦值之后,依然提示變量沒有賦值。因此,在設(shè)計(jì)時(shí)必須確保邏輯與左側(cè)的表達(dá)式返回值是一個(gè)可以預(yù)測的值。

    var user = 0;                                                 //定義并初始化變蛩

    ( ! user &&console. log ("變量沒有賦值")); //返回提示信息??變M沒有賦值"

    同時(shí),注意右側(cè)表達(dá)式不應(yīng)該包含賦值、遞增、遞減和函數(shù)調(diào)用等有效運(yùn)算,因?yàn)楫?dāng)左側(cè)表達(dá)式為false時(shí),則直接跳過右側(cè)表達(dá)式,會(huì)給后面的運(yùn)算帶來潛在影響。

    使用邏輯與運(yùn)算符可以代替設(shè)計(jì)多重分支結(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 :                       //默認(rèn)條件

    console.log ("null");

}

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部