短路問題經常是發生在邏輯運算符中的邏輯與(&&)、邏輯或(||)
1、邏輯或(||)
他是一真則真,當邏輯或前面的表達式結果為1或true時,邏輯或后面的表達式是不會執行的
2、邏輯與(&&)
他是一假則假,當邏輯與前面的表達式結果為0或false時,邏輯與后面的表達式是不會執行的
3、小知識點:當一個表達式中既有邏輯與,又有邏輯或,那么先執行邏輯與,邏輯與的優先級比邏輯或高
用幾個例子來說明一下
var a=1,b=2,c="博客園";
a || b && c="百度";
console.log(c)
解析:由於上面這個表達式中既有邏輯與,又有邏輯或,所以先執行邏輯與
上面的表達式也就演變成了:a || (b && c="百度"); a=1,所以為true,那么遇到真了,后面的(b && c="百度")這個表達式就不會執行了,自然而然c="百度"這句話就不會執行,所以c="博客園"。
那么如果(a || b) && c="百度"
console.log(c)
解析:因為有了括號,所以先執行括號里的,a=1為true,根據邏輯與的短路,遇到真了后面的依然會繼續執行,遇到假的后面才不會執行,所以就變成了 true && c="百度";所以c被重新賦值了,所以c="百度"
