iT邦幫忙

2021 iThome 鐵人賽

DAY 14
1
自我挑戰組

JavaScript 核心觀念系列 第 14

【Day14】優先性及相依性

  • 分享至 

  • xImage
  •  
  • 優先性(Precedence)

    決定運算子彼此之間被語法解析的方式,優先序較高的運算子會成為優先序較地運算子的運算元

  • 相依性(Associativity)

    相依性決定運算方向

MDN 參考文件中,將運算子優先性排列出來,優先性數字越大越先執行

範例:

let a = 1 * 2 + 3 * 4;
console.log(a);  // 14

該範例運算子執行順序說明,

先執行優先性 14 的 * 再執行優先性 13 的 +,最後才執行優先性 3 的 =

所以會先執行 1 * 23 * 4,之後將回傳結果相加,最後賦予到 a 變數中,

其中 *+ 的相依性是由左至右,而 = 的相依性是由右至左

console.log(1 < 2 < 3);  // true
console.log(3 > 2 > 1);  // false

該範例可能會有疑惑為何 3 > 2 > 1 會是 false

其中 >< 的相依性為由左至右

在講解前先看 1 < 2 < 3 執行順序,

該行程式碼會先執行 1 < 2 後取得結果 true

再使用回傳結果執行 true < 3

此時 true 會進行型別轉換成 1

所以 true < 3 被視為 1 < 3,因此回傳 true

接著我們看 3 > 2 > 1 的執行過程

首先執行 3 > 2,回傳結果為 true

之後執行 true > 1,此時 true 會進行型別轉換成 1

因此視為 1 > 1,所以回傳 false


上一篇
【Day13】運算子(Operator)
下一篇
【Day15】寬鬆相等、嚴格相等以及隱含轉型
系列文
JavaScript 核心觀念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言