你不知道的 JavaScript 系列中( 32 ) - 運算符的優先級

JavaScript 中的 && 和 || 運算符返回它們其中一個操作數的值,而非 true 或 false。在一個運算符兩個操作數的情況下這比較好理解:
var a = 42;
var b = "foo";
a && b; // "foo"
a || b; // 42

 

那麼兩個運算符三個操作數呢?
var a = 42;
var b = "foo";
var c = [1,2,3];
a && b || c; // 'foo'
a || b && c; // 42
這說明 && 運算符先於 || 執行,而且執行順序並非我們所設想的從左到右。原因就在於運 算符優先級。
對 && 和 || 來說,如果從左邊的操作數能夠得出結果,就可以忽略右邊的操作數。我們將 這種現象稱爲“短路”(即執行最短路徑)。



a ? b : c ? d : e;
? : 是右關聯,它的組合順序是以下哪一種呢?
• a ? b : (c ? d : e)
• (a ? b : c) ? d : e
答案是a ? b : (c ? d : e)

 

a && b || c ? c || b ? a : c && b : a
其中? :運算符的優先級比&&和||高還是低呢?執行順序是這樣?
a && b || (c ? c || (b ? a : c) && b : a)
還是這樣?
(a && b || c) ? (c || b) ? a : (c && b) : a
答案是後者。因爲&&運算符的優先級高於||,而||的優先級又高於? :

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章