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

JavaScript 邏輯與運算

提問人:劉團圓發(fā)布時間:2020-11-23

■知識點

    邏輯與運算(&&),只有兩個操作數(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");

}

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

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