運用符
基礎運用符
示例代碼:
js
var a = 10,
b = 20;
// Addition
console.log(30 === a + b);
// Subtraction
console.log(-10 === a - b);
// Multiplication
console.log(200 === a * b);
// Division
console.log(0.5 === a / b);
// Complementation
console.log(10 === a % b);加法運算+也可以用作字串的拼接。
js
var a = ".w",
b = "xs";
// String concatenation
console.log(".wxs" === a + b);一元運用符
示例代碼:
js
var a = 10,
b = 20;
// Auto increment
console.log(10 === a++);
console.log(12 === ++a);
// Auto decrement
console.log(12 === a--);
console.log(10 === --a);
// Positive value
console.log(10 === +a);
// Negative value
console.log(0 - 10 === -a);
// Not
console.log(-11 === ~a);
// Negate
console.log(false === !a);
// Delete
console.log(true === delete a.fake);
// Void
console.log(undefined === void a);
// Typeof
console.log("number" === typeof a);比特運用符**
示例代碼:
js
var a = 10,
b = 20;
// Left shift
console.log(80 === a << 3);
// Unsigned right shift
console.log(2 === a >> 2);
// Signed right shift
console.log(2 === a >>> 2);
// AND
console.log(2 === (a & 3));
// XOR
console.log(9 === (a ^ 3));
// OR
console.log(11 === (a | 3));比較運用符**
示例代碼:
js
var a = 10,
b = 20;
// Less than
console.log(true === a < b);
// Greater than
console.log(false === a > b);
// Less than or equal to
console.log(true === a <= b);
// Greater than or equal to
console.log(false === a >= b);等值運用符**
示例代碼:
js
var a = 10,
b = 20;
// Equal sign
console.log(false === (a == b));
// Not equal sign
console.log(true === (a != b));
// Equivalent sign
console.log(false === (a === b));
// Not equivalent sign
console.log(true === (a !== b));賦值運用符**
示例代碼:
js
var a = 10;
a = 10;
a *= 10;
console.log(100 === a);
a = 10;
a /= 5;
console.log(2 === a);
a = 10;
a %= 7;
console.log(3 === a);
a = 10;
a += 5;
console.log(15 === a);
a = 10;
a -= 11;
console.log(-1 === a);
a = 10;
a <<= 10;
console.log(10240 === a);
a = 10;
a >>= 2;
console.log(2 === a);
a = 10;
a >>>= 2;
console.log(2 === a);
a = 10;
a &= 3;
console.log(2 === a);
a = 10;
a ^= 3;
console.log(9 === a);
a = 10;
a |= 3;
console.log(11 === a);二元邏輯運用符**
示例代碼:
js
var a = 10,
b = 20;
// Logical AND
console.log(20 === (a && b));
// Logical OR
console.log(10 === (a || b));其他運用符**
示例代碼:
js
var a = 10,
b = 20;
//Conditional operator
console.log(20 === (a >= 10 ? a + 10 : b + 10));
//Comma operator
console.log(20 === (a, b));運算符優先級
| Priority | 運用符 | 說明 | Associativity |
|---|---|---|---|
| 20 | ( ... ) | 括弧 | n/a |
| 19 | ... . ... | 成員訪問 | 從左到右 |
| 19 | ... [ ... ] | 成員訪問 | 從左到右 |
| 19 | ... ( ... ) | 函數調用 | 從左到右 |
| 17 | ... ++ | 後置遞增 | n/a |
| 17 | ... -- | 後置遞減 | n/a |
| 16 | ! ... | 邏輯非 | 從右到左 |
| 16 | ~ ... | 按比特非 | 從右到左 |
| 16 | + ... | 一元加法 | 從右到左 |
| 16 | - ... | 一元減法 | 從右到左 |
| 16 | ++ ... | 前置遞增 | 從右到左 |
| 16 | -- ... | 前置遞減 | 從右到左 |
| 16 | typeof ... | typeof | 從右到左 |
| 16 | void ... | void | 從右到左 |
| 16 | delete ... | delete | 從右到左 |
| 14 | ... * ... | 乘法 | 從左到右 |
| 14 | ... / ... | 除法 | 從左到右 |
| 14 | ... % ... | 取模 | 從左到右 |
| 13 | ... + ... | 加法 | 從左到右 |
| 13 | ... - ... | 減法 | 從左到右 |
| 12 | ... << ... | 按比特左移 | 從左到右 |
| 12 | ... >> ... | 按比特右移 | 從左到右 |
| 12 | ... < ... | 無符號右移 | 從左到右 |
| 11 | ... >>> ... | 小於 | 從左到右 |
| 11 | ... <= ... | 小於等於 | 從左到右 |
| 11 | ... > ... | 大於 | 從左到右 |
| 11 | ... >= ... | 大於等於 | 從左到右 |
| 10 | ... == ... | 等號 | 從左到右 |
| 10 | ... != ... | 非等號 | 從左到右 |
| 10 | ... === ... | 全等號 | 從左到右 |
| 10 | ... !== ... | 非全等號 | 從左到右 |
| 9 | ... & ... | 按比特與 | 從左到右 |
| 8 | .. ^ ... | 按比特异或 | 從左到右 |
| 7 | ... | ... | 按比特或 | 從左到右 |
| 6 | ... && ... | 邏輯與 | 從左到右 |
| 5 | ... || ... | 邏輯或 | 從左到右 |
| 4 | ... ? ... : ... | 條件運用符 | 從右到左 |
| 3 | ... = ... | 賦值 | 從右到左 |
| 3 | ... += ... | 賦值 | 從右到左 |
| 3 | ... -= ... | 賦值 | 從右到左 |
| 3 | ... *= ... | 賦值 | 從右到左 |
| 3 | ... /= ... | 賦值 | 從右到左 |
| 3 | ... %= ... | 賦值 | 從右到左 |
| 3 | ... <<= ... | 賦值 | 從右到左 |
| 3 | ... >>= ... | 賦值 | 從右到左 |
| 3 | ... >>>= ... | 賦值 | 從右到左 |
| 3 | ... &= ... | 賦值 | 從右到左 |
| 3 | ... ^= ... | 賦值 | 從右到左 |
| 3 | ... |= ... | 賦值 | 從右到左 |
| 0 | ... , ... | 逗號 | 從左到右 |