在任何編程語言中,進行數學運算和計算是一個非常常見的操作。JavaScript提供了幾個運算子來幫助我們處理數字。

加法 (+)

const three = 1 + 2
const four = three + 1

如果使用字符串,+ 運算子也可以用於字符串拼接,所以要注意:

const three = 1 + 2
three + 1 // 4
'three' + 1 // three1

減法 (-)

const two = 4 - 2

除法 (/)

返回第一個運算元和第二個運算元的商:

const result = 20 / 5 //result === 4
const result = 20 / 7 //result === 2.857142857142857

如果除以零,JavaScript 不會引發任何錯誤,而是返回 Infinity 值(如果值為負則返回 -Infinity):

1 / 0 - //Infinity
 1 / 0 //-Infinity

餘數 (%)

餘數在許多情況下都是一個非常有用的計算:

const result = 20 % 5 //result === 0
const result = 20 % 7 //result === 6

除以零的餘數始終為 NaN,這是一個特殊值,表示“不是數字”:

;(1 % 0) - //NaN
 (1 % 0) //NaN

乘法 (*)

乘以兩個數字:

1 \* 2 - //2
 1 \* 2 //-2

指數運算 (**)

將第一個運算元的值提升到第二個運算元指定的次方:

1 \*\* 2 //1
2 \*\* 1 //2
2 \*\* 2 //4
2 \*\* 8 //256
8 \*\* 2 //64

指數運算符 ** 相當於使用 Math.pow(),但與其成為一個庫函數不同,它已成為語言的一部分。

Math.pow(4, 2) == 4 \*\* 2

這個特性對於需要進行大量數學計算的JavaScript應用程序來說是一個很好的添加。

** 運算符在許多語言中都有標準化,包括 Python、Ruby、MATLAB、Lua、Perl 等等。

遞增運算子 (++)

增加一個數字。這是一個一元運算子,如果放在數字前面,它返回增加後的值。如果放在數字後面,它返回原始值,然後進行增加。

let x = 0
x++ //0
x //1
++x //2

遞減運算子 (--)

與遞增運算子類似,但是遞減值。

let x = 0
x-- //0
x //-1
--x //-2

一元否定運算 (-)

返回操作數的否定值:

let x = 2 - x //-2
x //2

一元正運算 (+)

如果操作數不是數字,它會嘗試將其轉換為數字。否則,如果操作數已經是數字,它不做任何操作。

let x = 2 + x //2

x = '2' + x //2

x = '2a' + x //NaN