js中關於&&和||的優先級,網上查閱包括javascript權威指南中都是說&&優先級高於||。
測試發現好像不太一致。
在 chrome 控制台中輸入下列代碼:
var i = 1; var t = true || ((function(){i = 2;return true;})() && (function(){return false;})()) console.log(t,i)
返回結果為:
true 1
如果&&優先級高於||,則右邊括號內的代碼會先運行,i = 2; 會被執行,console 的 i 值就會為2,而這里則是1。
調整順序:
var i = 1; var t = ((function(){i = 2;return true;})() && (function(){return false;})()) || true ; console.log(t,i);
返回結果為:
true 2
i = 2; 被執行。
這里的代碼似乎是按照左右順序執行的,也就是 || 和 && 優先級是相同的,並非 && 高於 || 。