短路運算 &&和||
阿新 • • 發佈:2022-05-26
一、邏輯運算子 &&(短路與)
特點:只要碰到了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("變數沒有賦值"); }