ECMAScript 加性運算符

在多數程序設計語言中,加性運算符(即加號或減號)通常是最簡單的數學運算符。

在 ECMAScript 中,加性運算符有大量的特殊行為。

加法運算符

法運算符由加號(+)表示:

var iResult = 1 + 2

與乘性運算符一樣,在處理特殊值時,ECMAScript 中的加法也有一些特殊行為:

  • 某個運算數是 NaN,那么結果為 NaN。
  • -Infinity 加 -Infinity,結果為 -Infinity。
  • Infinity 加 -Infinity,結果為 NaN。
  • +0 加 +0,結果為 +0。
  • -0 加 +0,結果為 +0。
  • -0 加 -0,結果為 -0。

不過,如果某個運算數是字符串,那么采用下列規則:

  • 如果兩個運算數都是字符串,把第二個字符串連接到第一個上。
  • 如果只有一個運算數是字符串,把另一個運算數轉換成字符串,結果是兩個字符串連接成的字符串。

例如:

var result = 5 + 5;	//兩個數字
alert(result);		//輸出 "10"
var result2 = 5 + "5";	//一個數字和一個字符串
alert(result2);		//輸出 "55"

這段代碼說明了加法運算符的兩種模式之間的差別。正常情況下,5+5 等于 10(原始數值),如上述代碼中前兩行所示。不過,如果把一個運算數改為字符串 "5",那么結果將變為 "55"(原始的字符串值),因為另一個運算數也會被轉換為字符串。

注意:為了避免 JavaScript 中的一種常見錯誤,在使用加法運算符時,一定要仔細檢查運算數的數據類型。

減法運算符

減法運算符(-),也是一個常用的運算符:

var iResult = 2 - 1;

與加法運算符一樣,在處理特殊值時,減法運算符也有一些特殊行為:

  • 某個運算數是 NaN,那么結果為 NaN。
  • Infinity 減 Infinity,結果為 NaN。
  • -Infinity 減 -Infinity,結果為 NaN。
  • Infinity 減 -Infinity,結果為 Infinity。
  • -Infinity 減 Infinity,結果為 -Infinity。
  • +0 減 +0,結果為 +0。
  • -0 減 -0,結果為 -0。
  • +0 減 -0,結果為 +0。
  • 某個運算符不是數字,那么結果為 NaN。

注釋:如果運算數都是數字,那么執行常規的減法運算,并返回結果。