js && || 運算子
2019年清明三天假,終於有時間寫寫,昨天有同事問我關於邏輯運算子 &&(邏輯與) || (邏輯或) 運算子,看來很多人基礎還是比較薄弱,今天就寫寫&& || 運算子基礎。
前言
當存在 && 和 || 表示式時,兩邊都會轉化為布林型別(Boolean),然後再進行運算。
在js邏輯運算中,0、''、null、false、undefined、NaN都會轉為false,其他都為true。
&& 運算子優先順序高於 ||。
1、&& 運算子
- 兩邊條件都為true時,結果才為true
- 如果有一個為false,結果就為false
- 當第一個條件為false時,就不再判斷後面的條件
注意:
當數值參與邏輯與運算時,結果為true,那麼會返回的會是第二個為真的值。
如果結果為false,返回的會是第一個為假的值。
2、|| 運算子
- 只要有一個條件為true時,結果就為true
- 當兩個條件都為false時,結果才為false
- 當一個條件為true時,後面的條件不再判斷
注意:
當數值參與邏輯或運算時,結果為true,會返回第一個為真的值。
如果結果為false,會返回第二個為假的值。
3、demo
1 && 2 && 0 && 1 || 3 && 1 || 2// 1
1 && 2 && 0 && (1 || 3) && 1 || 2// 2
null && 2 && '' && (1 || 3) && 1 || 2 && '' // ""
其實非常簡單,只要根據轉為boolean的規則,然後看最後一步執行了什麼就返回什麼。
總結
- &&、||、! 運算子都會把兩邊的轉為boolean 型別。
- ''、null、underfined、NaN、0、false 這6個都會轉為false,其餘會轉為true。
- && 、|| 都是是短路操作符,&& 只要第一個是false 就不會計算後面,|| 只要第一個是true 就不會計算後面。
- && 運算子優先順序高於 ||。
- && 、|| 都是返回最後執行的那部分表示式。