初學者指南:為什麼在 JavaScript 中先乘除後加減?

更新日期: 2024 年 10 月 17 日

在學習 JavaScript(以及大多數程式語言)時,你可能會發現數學運算符的執行順序與我們在數學課上學到的相同:先乘除,後加減

這種運算順序稱為「運算子優先順序」(Operator Precedence)。

本篇文章將為新手詳細介紹為什麼會有這樣的規則,如何理解運算子的優先順序,以及如何正確地解讀和計算像 6 ÷ 2(1+2) 這樣的表達式。


什麼是運算子優先順序?

運算子優先順序是指在沒有括號的情況下,運算式中各個運算子被執行的順序。這個順序決定了複雜表達式是如何被計算的。

JavaScript 中的運算子優先順序

在 JavaScript 中,常見的運算子優先順序如下(從高到低):

  1. 括號 ():最高優先級,先計算括號內的表達式。
  2. 指數 **
  3. 乘法 *、除法 /、取餘 %
  4. 加法 +、減法 -

為什麼先乘除後加減?

數學規則的延伸

「先乘除,後加減」的規則源自數學中的運算規則,稱為 BEDMAS/PEDMAS

  • B/P:Brackets/Parentheses(括號)
  • E:Exponents(指數)
  • D:Division(除法)
  • M:Multiplication(乘法)
  • A:Addition(加法)
  • S:Subtraction(減法)

JavaScript 等程式語言延續了這一規則,以確保程式計算結果與數學計算一致。

運算子的結合性

  • 左結合性:從左到右計算,例如加法、減法、乘法、除法。
  • 右結合性:從右到左計算,例如賦值運算子 =、指數運算子 **

如何解讀 6 ÷ 2(1+2)

這個表達式經常引起爭議,因為不同的人可能會得到不同的答案。我們將按照 JavaScript 的運算子優先順序來解釋。

步驟解析

表達式:

6 ÷ 2 * (1 + 2)

步驟一:計算括號內的表達式

(1 + 2) = 3

表達式變為:

6 ÷ 2 * 3

步驟二:從左到右進行乘除計算

  • 第一個運算:6 ÷ 2
  6 ÷ 2 = 3
  • 第二個運算:結果 * 3
  3 * 3 = 9

最終結果:9

常見的錯誤解讀

有些人可能會將表達式解讀為:

6 ÷ [2 * (1 + 2)] = 6 ÷ [2 * 3] = 6 ÷ 6 = 1

解釋:

  • 這種解讀將 2(1+2) 視為整體,認為應該先計算括號外的乘法。
  • 然而,在 JavaScript 中,除法和乘法具有相同的優先級,按照從左到右的順序計算。

在 JavaScript 中計算

代碼示例:

let result = 6 / 2 * (1 + 2);
console.log(result); // 輸出:9

正確使用括號以避免歧義

為了避免運算過程中的歧義,建議在需要強調計算順序時,使用括號明確表示。

如果期望結果為 1

修改表達式:

6 ÷ [2 * (1 + 2)]

JavaScript 代碼:

let result = 6 / (2 * (1 + 2));
console.log(result); // 輸出:1

如果期望結果為 9

原始表達式已經得到結果 9,無需修改。


總結

  • 運算子優先順序:JavaScript 中,乘法和除法的優先級高於加法和減法,按照從左到右的順序計算。
  • 括號的重要性:使用括號可以明確運算順序,避免歧義。

延伸閱讀


結語

理解運算子優先順序是學習 JavaScript 的重要一環。

透過本篇文章,希望你能夠:

  • 掌握基本的運算子優先順序:知道在沒有括號的情況下,應該按照什麼順序進行計算。
  • 正確解讀複雜的表達式:避免因誤解運算順序而導致錯誤的結果。
  • 運用括號來避免歧義:在程式中明確地表示計算順序,提高代碼的可讀性和可靠性。

記住,在程式設計中,清晰和精確比簡潔更為重要。當你不確定運算順序時,使用括號來消除任何可能的誤解。

Similar Posts