1. 程式人生 > 其它 >短路運算 &&和||

短路運算 &&和||

一、邏輯運算子 &&(短路與)

特點:只要碰到了false或者等價於false的就短路,只要短路了就不會繼續往後執行了。如果短路了,得到造成短路的這個值,如果不短路,得到的是第二個值

console.log( true && true ); // true
console.log( 123 && '中國'); // 中國
console.log( false && true ); // false
console.log( true && false); // false
console.log(1 && 0); //
0 console.log( undefined && 0); // undefined console.log(null && 1); // null

二、邏輯運算子 ||(短路或)

特點:只要碰到了true或者等價於true的就短路,只要短路了就不會繼續往後執行了。如果短路了,得到造成短路的這個值,如果不短路,得到的是第二個值

console.log( true || true ); // true
console.log( 123 || '中國'); // 123
console.log( false || true ); // true
console.log( true
|| false); // true console.log(1 || 0); // 1 console.log( undefined || 0); // 0 console.log(null || 1); // 1

需要注意的是:&& 和 || 的結果不一定是布林型別,短路或一般用於設定函式的預設引數

之前記錄的一段:

注意&&短路邏輯的用法

邏輯與是一種短路邏輯,如果左側表示式為 false,則直接短路返回結果,不再運算右側表示式。運算邏輯如下:

  • 第 1 步:計算第一個運算元(左側表示式)的值。
  • 第 2 步:檢測第一個運算元的值。如果左側表示式的值可轉換為 false(如 null、undefined、NaN、0、""、false),那麼就會結束運算,直接返回第一個運算元的值。
  • 第 3 步:如果第一個運算元可以轉換為 true,則計算第二個運算元(右側表示式)的值。
  • 第 4 步:返回第二個運算元的值。
var user;  //定義變數
(!user && console.log("沒有賦值"));  //返回提示資訊“沒有賦值”

等效於:

var user;    //定義變數
if (!user){  //條件判斷
    console.log("變數沒有賦值");
}