[JS奇怪的世界]No.16 運算子的優先性與相依性

運算子的優先性與相依性

這兩個名詞在 JavaScript 是一個非常重要的東西,而且是非常重要的觀念,如果能瞭解其觀念,對於 debug 上也是有一定幫助的。

運算子的優先性

運算子的優先性的意思是表示哪一個運算子會被優先運算,因為一般來講一個運算子來講不一定會只有一個,而 JavaScript 會優先處理優先性較高的運算子依序到最低。

運算子的相依性

運算子的相依性是什麼?相依性代表的是運算子被計算的順序,通常要馬是從左至右的相依性而這叫做左相依性,不然就是從右至左。

所以當一條運算中有兩個相同的優先性,那麼相依性就會很重要,相依性可以用來判斷要從右至左還是從左至右,課程提供了一個範例。

1
2
var a = 3 + 4 * 5;
console.log(a);

答案會是多少?23,我們先思考一下數學規則,先乘除後加減,所以會 JavaScript 也是一樣的道理,所以 JavaScript 會先處理 4 * 5 處理完之後再 + 3

那 JavaScript 的優先順序怎麼看? 課程中有附上 MDN 的文件連結可供我們去瞭解運算子的優先順序,而數字越大(Precedence)代表優先度越高。

在這邊課程就有提供一個不錯的範例

1
2
3
4
5
6
7
8
9
10

var a = 2;
var b = 3;
var c = 4;

a = b = c;

console.log(a);
console.log(b);
console.log(c);

答案會是 4,原因是在運算只優先度情況之下,它就會依照相依性來決定執行順序,而等號就是從右至左。

圖源

JavaScript 全攻略:克服 JS 奇怪的部分