JavaScript 算數

處理數值的典型情景是算數。

JavaScript 算數運算符

算術運算符對數值(文字或變量)執行算術運算。

運算符 描述
+ 加法
- 減法
* 乘法
** 冪(ES2016
/ 除法
% 系數
++ 遞增
-- 遞減

算數運算符

典型的算術運算會操作兩個數值。

這兩個數可以是字面量:

實例

var x = 7 + 8;

親自試一試

或變量:

實例

var x = a + b;

親自試一試

或表達式:

實例

var x = (7 + 8) * a;

親自試一試

運算符和操作數

在算術運算中,數被稱為操作數

(兩個操作數之間執行的)運算由運算符定義。

操作數 運算符 操作數
7 + 8

加法

加法運算符(+)加數:

var x = 7;
var y = 8;
var z = x + y; 

親自試一試

減法

減法運算符(-)減數。

var x = 7;
var y = 8;
var z = x - y; 

親自試一試

乘法

乘法運算符(*)乘數。

var x = 7;
var y = 8;
var z = x * y; 

親自試一試

除法

除法運算符(/)除數。

var x = 7;
var y = 2;
var z = x / y; 

親自試一試

系數

系數運算符(%)返回除法的余數。

var x = 7;
var y = 2;
var z = x % y; 

親自試一試

注釋:在算術中,兩個整數的除法產生商和余數。

注釋:在數學中,模運算的結果是算術除法的余數。

遞增

遞增運算符(++)對數值進行遞增。

var x = 7;
x++;
var z = x;

親自試一試

遞減

遞減運算符(--)對數值進行遞減。

var x = 7;
x--;
var z = x; 

親自試一試

取冪運算符(**)將第一個操作數提升到第二個操作數的冪。

實例

var x = 5;
var z = x ** 2;          // 結果是 25

親自試一試

x ** y 產生的結果與 Math.pow(x,y) 相同:

實例

var x = 5;
var z = Math.pow(x,2);   // 結果是 25

親自試一試

運算符優先級

運算符優先級(Operator precedence)描述了在算術表達式中所執行操作的順序。

實例

var x = 200 + 50 * 2;

親自試一試

上例的結果是 250 * 2 還是 200 + 100 呢?

是加法還是乘法優先呢?

在傳統的學校數學中,乘法是優先的。

乘法(*)和除法(%)比加法(+)和減法(-)擁有更高的優先級

同時,(就像在學校的數學中那樣)能夠通過使用括號來改變優先級:

實例

var x = (200 + 50) * 2;

親自試一試

當使用括號時,括號中的運算符會首先被計算。

當多個運算擁有相同的優先級時(比如加法和減法),對它們的計算是從左向右的:

實例

var x = 200 + 50 - 2;

親自試一試

JavaScript 運算符優先級值

運算符 描述 實例
20 ( ) 表達式分組 (3 + 4)
       
19 . 成員 person.name
19 [] 成員 person["name"]
19 () 函數調用 myFunction()
19 new 創建 new Date()
       
17 ++ 后綴遞增 i++
17 -- 后綴遞減 i--
       
16 ++ 前綴遞增 ++i
16 -- 前綴遞減 --i
16 ! 邏輯否 !(x==y)
16 typeof 類型 typeof x
       
15 ** 求冪 (ES7) 10 ** 2
       
14 * 10 * 5
14 / 10 / 5
14 % 模數除法 10 % 5
       
13 + 10 + 5
13 - 10 - 5
       
12 << 左位移 x << 2
12 >> 右位移 x >> 2
12 >>> 右位移(無符號) x >>> 2
       
11 < 小于 x < y
11 <= 小于或等于 x <= y
11 > 大于 x > y
11 >= 大于或等于 x >= y
11 in 對象中的屬性 "PI" in Math
11 instanceof 對象的實例 instanceof Array
       
10 == 相等 x == y
10 === 嚴格相等 x === y
10 != 不相等 x != y
10 !== 嚴格不相等 x !== y
       
9 & 按位與 x & y
8 ^ 按位 XOR x ^ y
7 | 按位或 x | y
6 && 邏輯與 x && y
5 || 邏輯否 x || y
4 ? : 條件 ? "Yes" : "No"
       
3 = 賦值 x = y
3 += 賦值 x += y
3 -= 賦值 x -= y
3 *= 賦值 x *= y
3 %= 賦值 x %= y
3 <<= 賦值 x <<= y
3 >>= 賦值 x >>= y
3 >>>= 賦值 x >>>= y
3 &= 賦值 x &= y
3 ^= 賦值 x ^= y
3 |= 賦值 x |= y
       
2 yield 暫停函數 yield x
1 , 逗號 7 , 8

注意:淡紅色指示實驗性或建議性的技術(ECMASScript 2016 或 ES7)

提示:括號中的表達式會在值在表達式的其余部分中被使用之前進行完全計算。