目录
算术运算符用于对两个变量或值进行算术运算,与数学上的加、减、乘、除类似。
| 运算符 | 运算 | 示例 | 解释说明 |
| + | 加 | 1 + 5 | 6 |
| - | 减 | 8 - 4 | 4 |
| * | 乘 | 3 * 4 | 12 |
| / | 除 | 3 / 2 | 1.5 |
| % | 取余数(取模) | 7 % 5 | 2 |
单目运算符(一元运算符):参与运算的对象只有一个,并运算符必须出现在运算对象的左边。(如+5,-6)
双目运算符(二元运算符):参与运算的对象有两个。(如a+b)
注意:
使用递增(++)、递减(--)运算符可以快速地对变量的值进行递增和递减操作,它属于一元运算符,只对一个表达式进行操作。递增和递减运算符的优先级高于“+”“-”等运算符。
递增和递减运算符写在变量前面,返回的是计算后的结果。
- var a = 5;
- a++;
- console.log(a); // 输出:6
-
-
- var n=5,m=3,k;
- k = ++n*m; // 先加1,后运算
- console.log(n);
- console.log(k); // 输出:18
递增和递减运算符写在变量后面,返回的是计算前的结果。
- var b = 5;
- ++b;
- console.log(b); //输出:6
-
-
- var n=5,m=3,k;
- k = n++*m; // 先运算,后加1
- console.log(n);
- console.log(k); // 输出:15
比较运算符用于对两个数据进行比较,其结果是一个布尔值,即true或false ,常用的比较运算符及用法见下表。
| 运算符 | 运算 | 示例 | 结果 |
| > | 大于 | 5 > 5 | false |
| < | 小于 | 5 < 5 | false |
| >= | 大于或等于 | 5 >= 5 | true |
| <= | 小于或等于 | 5 <= 5 | true |
| == | 等于(只比较值) | 5 == 4 | false |
| != | 不等于(只比较值) | 5 != 4 | true |
| === | 全等(先判断类型、后判断值) | 5 === 5 | true |
| !== | 不全等(类型、值) | 5 !== '5' | true |
- var a = '123';
- var b = 123;
-
- console.log(a == b); // 输出:true
- console.log(a === b); // 输出:false
逻辑运算符用于对布尔值进行运算,其返回值也是布尔值。在实际开发中,逻辑运算符经常用于多个条件的判断,常用的逻辑运算符见下表。
| 运算符 | 运算 | 示例 | 结果 |
| && | 与 | a && b | a和b都为true,结果为true,否则为false |
| || | 或 | a || b | a和b中至少有一个为true,结果为true,否则为false |
| ! | 非(取反) | !a | 单目运算符,若a为false,结果为true,否则相反 |
当"表达式1"为假时,不运算"表达式2"
- var a = 10, b = 5, k;
- k = a>6 && (--b<3); // k所等于的第一个表达式为真,第二个表达式为假
- console.log('k=', k); // 输出:false
- console.log('b=', b); // 输出:4
-
-
- // '&&'运算中的短路现象:当"表达式1"为假时,不运算"表达式2"
- var n = 10, m = 5, z;
- z = n<6 && (--m<3); // z所等于的第一个表达式为假,第二个表达式为假
- console.log('z=', z); // 输出:false
- console.log('m=', m); // 输出:5————因为短路了,没有运算
当"表达式1"为真时,不运算"表达式2"
- var n = 10, m = 5, z;
- z = n < 6 || (--m < 3); // z所等于的第一个表达式为假,第二个表达式为假
- console.log('z=', z); // 输出:false
- console.log('m=', m); // 输出:4
-
-
- // '||'运算中的短路现象:当"表达式1"为真时,不运算"表达式2"
- var a = 10, b = 5, k;
- k = a > 6 || (--b < 3); // k所等于的第一个表达式为真,第二个表达式为假
- console.log('k=', k); // 输出:true
- console.log('b=', b); // 输出:5————因为短路了,没有运算
用来对数据进行二进制运算,将参与运算的操作数视为由二进制(0和1)组成的32位的串。
| 运算符 | 运算 | 示例 | 结果 |
| & | 按位'与' | a & b | a和b对应的二进制位都为1时,结果为1,否则为0 |
| | | 按位'或' | a ||b | a和b对应的二进制位有一个为1时,结果为1 |
| ^ | 按位'异或' | a^b | 两个对应的二进制位相同为0,不同为1 |
例:按位'与'运算 按位'异或'运算

赋值运算符用于将运算符右边的值赋给左边的变量,常用的赋值运算符及示例见下表。
| 运算符 | 运算 | 示例 | 结果 |
| = | 赋值 | a = 3; | a = 3 |
| += | 加并赋值 | a = 3; a += 2; | a = 5 |
| -+ | 减并赋值 | a = 3; a -= 2; | a = 1 |
| *= | 乘并赋值 | a = 3; a *= 2; | a = 6 |
| /= | 除并赋值 | a = 3; a /= 2; | a = 1.5 |
| %= | 模并赋值 | a = 3; a %= 2; | a = 1 |
| += | 连接并赋值 | a = 'abc'; a += 'def'; | a = 'abcdef' |
| <<= | 左移位并赋值 | a = 9; a <<= 2; | a = 36 |
| >>= | 右移位并赋值 | a = -9; a >>= 2; | a = -3 |
| >>>= | 无符号右移位并赋值 | a = 9; a >>>= 2; | a = 2 |
| &= | 按位“与”并赋值 | a = 3; a &= 9; | a = 1 |
| ^= | 按位“异或”并赋值 | a = 3; a ^= 9; | a = 10 |
| |= | 按位“或”并赋值 | a = 3; a |= 9; | a = 11 |
常用的赋值运算符及示例如下。
- console.log(Boolean('')) // false
- var age = 10;
- age += 5; // 相当于age = age + 5;
- console.log(age); // 输出结果:15
- age -= 5; // 相当于age = age - 5;
- console.log(age); // 输出结果:10
- age *= 10; // 相当于age = age * 10;
- console.log(age); // 输出结果:100
三元运算符是一种需要三个操作数的运算符,运算的结果根据给定条件决定。
条件表达式 ? 表达式1 : 表达式2
语法说明:先求条件表达式的值,如果为true,则返回表达式1的执行结果;如果条件表达式的值为false,则返回表达式2的执行结果。
运算符优先级是指表达式中所有运算符参与运算的先后顺序,优先级如下表。
| 结合方向 | 运算符 | 结合方向 | 运算符 |
| 无 | () | 左 | == != === !== |
| 左 | . [] new(有参数,无结合性) | 左 | & |
| 右 | new(无参数) | 左 | ^ |
| 无 | ++(后置) --(后置) | 左 | | |
| 右 | ! ~ -(负数) +(正数) ++(前置) --(前置) typeof void delete | 左 | && |
| 右 | ** | 左 | || |
| 左 | * / % | 右 | ?: |
| 左 | + - | 右 | = += = *= /= %= <<= >>= >>>= &= ^= |= |
| 左 | << >> >>> | 左 | , |
| 左 | < <= > >= in instanceof |
注意:所有运算符中,单目运算符的优先级永远最高。