Skip to main content

console.log(3>2>1) 是什麼?JavaScript 優先性與相依性

在四則運算我們知道先乘除、後加減、括號內優先計算,程式語言的運算子個別也有不同的優先性,這我們稱為 運算子優先性

優先性決定順序,相依性則決定執行方向,例如是從左至右還是從右至左執行,從左開始十分直覺,但 JavaScript 也不乏從右邊執行的運算子

var a = (b = 1);

1 會先賦值到 b,b = 1 這段表達式執行完會回傳 1,再賦值到 a 上,但實務非常不建議連續賦值就是了,因為有滿多雷點

完整的優先性與相依性清單,可以參考 MDN

優先性數字越大代表越優先,在這張表也可以看到的確有「先乘除、後加減、括號內優先計算」

那這題怎麼解呢? 這題就用到了相依性與轉型

console.log(3 > 2 > 1);

依相依性,> 運算子是由左而又,所以 3>2 會先執行,回傳 true

接著就是比對 true > 1,雖然你不一定完全懂轉型,但怎麼轉型 true 頂多等於 1,並不會大於,所以這題最終會回傳 false