紀錄 JavaScript 算術運算子
內容
加號 (+)
若兩者都為 Number
則如同一般運算方式
1 | var total = 10 + 10; // 20 |
假若其中一項為字串,則相加結果會變成字串
也就是說,其中一項是字串,另一項會被「自動轉型」為字串後連在一起
1 | var total = 10 + '10'; // 1010 |
若改為如下則結果還是字串內容
因為運算式的計算是「由左而右」且「先乘除後加減」的模式來運算。
所以前面的字串會先與 a
相加,再把結果與 b
做相加。
1 | var a = 5; |
為避免這樣的情況,需要用小括號包起 a + b
就可以得到正確的結果
1 | var a = 5; |
減號 (-)
與加號不同,其中一項為字串時會先將數值轉為「數字」,再進行減法運算。
1 | var total = 50 - '10'; // 40 |
但如果碰到 boolean
也會轉型為「數字」,再進行運算。
1 | 100 - true // 99 |
也就是做減法運算時,若其中一方屬於基本型別且不是數字的情況,那麼 JavaScript
會在先在背後透過 Number()
嘗試將數值轉為「數字」,再進行運算。
乘號 (*)
乘號在碰到其中一項不是 Number
的話,那麼 JavaScript
就會先在背後以 Nubmer()
作轉換後再進行計算
1 | 100 * "10" // 1000 |
除號 (/)
除法與乘法的規則類似。
也都是碰到其中一項不是 Number
的話就轉型為 Number
再進行運算
但是,在除數為 0
的情況下:
被除數為正數,則結果為 Infinity
被除數為負數,則結果為 -Infinity
被除數為 0
,則結果為 NaN
當然,如果有其中一個是 NaN
,則結果也會是 NaN
。
1 | 100 / 0 // Infinity |