邏輯運算子
邏輯運算子通常和布林(邏輯)值一起使用,並返回布林值。然而,&& 和 || 運算子實際上返回的是指定的運算元的其中一個的值,所以如果這些運算子與非布林值一起使用,有可能返回非布林值。邏輯運算子的說明如下表。
運算子 | 用法 | 說明 |
---|---|---|
&& | expr1 && expr2 | (邏輯 AND)如果 expr1 可以轉換為 false,就返回 expr1。否則返回 expr2。所以,當使用於布林值時,如果兩個運算元都為 true,&& 返回 true。否則返回 false。 |
|| | expr1 || expr2 | (邏輯 OR)如果 expr1 可以轉換為 true,就返回 expr1。否則返回 expr2。所以,當使用於布林值時,如果其中一個運算元為 true,|| 返回 true,如果兩個運算元都為 false,就返回 false。 |
! | !expr | (邏輯 NOT)如果運算元可以轉換為 true,就返回 false。否則返回 true。 |
表 3.7: 邏輯運算子
可以轉換成 false 的表達式的例子有︰對 null、0、空字串 ("") 或 undefined 求值。
以下代碼為 &&(邏輯 AND)運算子的範例。
a1=true && true // t && t 返回 true a2=true && false // t && f 返回 false a3=false && true // f && t 返回 false a4=false && (3 == 4) // f && f 返回 false a5="Cat" && "Dog" // t && t 返回 Dog a6=false && "Cat" // f && t 返回 false a7="Cat" && false // t && f 返回 false
以下代碼為 ||(邏輯 OR)運算子的範例。
o1=true || true // t || t 返回 true o2=false || true // f || t 返回 true o3=true || false // t || f 返回 true o4=false || (3 == 4) // f || f 返回 false o5="Cat" || "Dog" // t || t 返回 Cat o6=false || "Cat" // f || t 返回 Cat o7="Cat" || false // t || f 返回 Cat
以下代碼為 !(邏輯 NOT)運算子的範例。
n1=!true // !t 返回 false n2=!false // !f 返回 true n3=!"Cat" // !t 返回 false
求值的最短路徑
由於邏輯表達式是由左往右求值,他們使用以下規則來測試,儘可能以“最短路徑”求值︰
false
&& anything 中的 false 是求值的最短路徑。true
|| anything 中的 true 是求值的最短路徑。
這些邏輯規則保證求出的值永遠正確。注意,上述表達式中的 anything 部分並未求值,因此所有未求值的部分都不會產生作用。