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

JavaScript 邏輯或運算

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

■知識點

    邏輯或運算(||):如果兩個操作數(shù)都為true,或者其中一個為true,就返回true,否則返回false。邏輯或也是一種短路邏輯:如果左側(cè)表達(dá)式為true,則直接短路返回結(jié)果,不再運算右側(cè)表達(dá)式。運算邏輯如下。

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

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

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

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

■實例設(shè)計 針對下面4個表達(dá)式:

var n = 3;

(n == 1) &&console.log (1);

(n == 2) &&console.log (2);

(n == 3) &&console.log (3);

(! n) &&console.log("null");

可以使用邏輯或?qū)ζ溥M(jìn)行合并:

var n = 3;

(n == 1) &&console.log (1) | |

(n == 2) &&console.log (2) | |

(n == 3) &&console.log (3) | |

(! n) &&console.log (,fnulln);

由于&&運算符的優(yōu)先級高于ii運算符的優(yōu)先級,所以不必使用小括號進(jìn)行分組。如果使用小括號分組后,代碼更容易閱讀。

var n = 3;

((n == 1) &&console.log(1) ) ||       //為true時,結(jié)束并返回該行值

((n == 2) &&console.log(2))  ||       //為true時,結(jié)束并返回該行值

((n == 3) &&console.log(3) ) ||       //為true時,結(jié)束并返回該行值

((! n) &&console.log(nnulln));        //為true時,結(jié)束并返回該行值

下面的代碼設(shè)計一個復(fù)雜的嵌套結(jié)構(gòu),根據(jù)變量a決定是否執(zhí)行一個循環(huán)。

var a = b = 2;          //定義并連續(xù)初始化 

if (a){                 //條件結(jié)構(gòu)

while(b ++ < 10){       //循環(huán)結(jié)構(gòu)

console.log(b ++);      //循環(huán)執(zhí)行語句

}

使用邏輯與和邏輯或運算符進(jìn)行簡化:

var a = b = 2;              //定義并連續(xù)初始化

if(a){                      //條件結(jié)構(gòu)

    while(b ++ < 10){       //循環(huán)結(jié)構(gòu)

        console.log(b ++);  //循環(huán)執(zhí)行語句

    }

}

使用邏輯與和邏輯或運算符進(jìn)行簡化:

var a = b = 2;              //定義并連續(xù)初始化

while(a && b ++ < 10) console.log(b++);   //邏輯與運算符合并的多條件表達(dá)式

如果轉(zhuǎn)換為如下嵌套結(jié)構(gòu)就不能夠繼續(xù)使用上述表達(dá)式進(jìn)行簡化。因為下面的代碼是先執(zhí)行循環(huán)體,后執(zhí)行條件檢測。

while(b ++ < 10){           //先執(zhí)行循環(huán)

    if(a){                  //再判斷條件

        console.log(b++);

    }

}

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

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