寫在前面的知識:
Boolean強制轉換:
除了NaN、null、""、undefined、0、function這幾個為false外,其他皆為true;
關於轉換,等會我會再寫一篇,專門講string、int、Boolean轉換。
短路運算的符號: || && ! 或與非
短路運算的原理:當有多個表達式時,左邊的表達式值可以確定結果時,就不再繼續運算右邊的表達式的值;
短路運算的規則:
&& 找假,先看第一個表達式的值,如果第一個表達式不是布爾類型,強制轉換成布爾類型,轉換若后為false,則返回第一個值(不是被強制轉換后的值),否則返回第二個值
|| 找真,先看第一個表達式的值,如果第一個表達式不是布爾類型,強制轉換成布爾類型,轉換若后為true,則返回第一個值(不是被強制轉換后的值),否則返回第二個值
! 非, 看表達式的值,如果表達式的值不是布爾類型,強制轉換成布爾類型,若為true,則返回false,否則返回true。
短路運算的例子:
javascript代碼:
<script> console.log("短路運算的&和|只比較第一個表達式,並由第一個表達式和運算符號決定返回哪個值"); console.log("&&測試"); console.log("&&找假"); console.log(true&&true); console.log(true&&false); console.log(false&&true); console.log(false&&false); console.log(true&&"abs");//直接顯示第二個表達式的值abs console.log(false&&"abs");//直接顯示第一個表達式的值false console.log(""&&"abs");//什么都沒顯示,因為第一個表達式經Boolean強制轉換后是false,所以顯示第一個值 console.log("abs"&&"qwe");//直接顯示qwe console.log("||測試"); console.log("||找真"); console.log(true||true); console.log(true||false); console.log(false||true); console.log(false||false); console.log(true||"abs");//直接顯示true console.log(false||"abs");//直接顯示abs console.log(""||"abs");//顯示abs console.log("abs"||"qwe");//顯示abs console.log("!測試"); console.log(!true); console.log(!false); console.log(!"abs");//字符串abs經boolean強制轉換后是true,!true是false console.log(!"");//字符串經boolean強制轉換后是false, !false是true </script>
控制台截圖: