JavaScript 算數
處理數值的典型情景是算數。
算數運算符
典型的算術運算會操作兩個數值。
這兩個數可以是字面量:
實例
var x = 7 + 8;
或變量:
實例
var x = a + b;
或表達式:
實例
var x = (7 + 8) * a;
運算符和操作數
在算術運算中,數被稱為操作數。
(兩個操作數之間執行的)運算由運算符定義。
操作數 | 運算符 | 操作數 |
---|---|---|
7 | + | 8 |
系數
系數運算符(%
)返回除法的余數。
var x = 7; var y = 2; var z = x % y;
注釋:在算術中,兩個整數的除法產生商和余數。
注釋:在數學中,模運算的結果是算術除法的余數。
冪
取冪運算符(**)將第一個操作數提升到第二個操作數的冪。
實例
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)
提示:括號中的表達式會在值在表達式的其余部分中被使用之前進行完全計算。