0%

JavaScript 算術運算子

紀錄 JavaScript 算術運算子內容

加號 (+)

若兩者都為 Number 則如同一般運算方式

1
var total = 10 + 10; // 20

假若其中一項為字串,則相加結果會變成字串
也就是說,其中一項是字串,另一項會被「自動轉型」為字串後連在一起

1
var total = 10 + '10'; // 1010

若改為如下則結果還是字串內容
因為運算式的計算是「由左而右」且「先乘除後加減」的模式來運算。
所以前面的字串會先與 a 相加,再把結果與 b 做相加。

1
2
3
var a = 5;
var b = 5;
var total = "5 加 5 等於 " + a + b; // 5 加 5 等於 55

為避免這樣的情況,需要用小括號包起 a + b 就可以得到正確的結果

1
2
3
var a = 5;
var b = 5;
var total = "5 加 5 等於 " + (a + b); // 5 加 5 等於 10

減號 (-)

與加號不同,其中一項為字串時會先將數值轉為「數字」,再進行減法運算。

1
var total = 50 - '10'; // 40

但如果碰到 boolean 也會轉型為「數字」,再進行運算。

1
2
100 - true // 99
100 - false //100

也就是做減法運算時,若其中一方屬於基本型別且不是數字的情況,那麼 JavaScript 會在先在背後透過 Number() 嘗試將數值轉為「數字」,再進行運算。

乘號 (*)

乘號在碰到其中一項不是 Number 的話,那麼 JavaScript 就會先在背後以 Nubmer() 作轉換後再進行計算

1
2
3
4
5
6
7
100 * "10"      // 1000
100 * abc // NaN

100 * true // 100
100 * false // 0

100 * {} // NaN

除號 (/)

除法與乘法的規則類似。
也都是碰到其中一項不是 Number 的話就轉型為 Number 再進行運算
但是,在除數為 0 的情況下:

被除數為正數,則結果為 Infinity
被除數為負數,則結果為 -Infinity
被除數為 0,則結果為 NaN
當然,如果有其中一個是 NaN,則結果也會是 NaN

1
2
3
4
100 / 0      // Infinity
-100 / 0 // -Infinity
0 / 0 // NaN
NaN / 0 // NaN

以上內容均參考重新認識 JavaScript: Day 06 運算式與運算子