JavaScript中常用运算符
算数运算符
执行两个变量或值的算术运算
递增递减运算符
- 前置递增:先自加1,再返回值
- 后置递增:先返回原值,后自加1
比较运算符
- =赋值
- ==判断(有隐式转换,判断值是否相等)
- ===全等
逻辑运算符
短路运算(逻辑中断):当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值
赋值运算符
运算符优先级
小括号、 一元运算符、算数运算符(先*/%后±)、关系运算符、相等运算符、逻辑运算符(先&&后||)、赋值运算符、逗号运算符
举例
- 初级案例
var a = 10;
++a;
var b = ++a + 2;
console.log(b);
代码 | 变量 | 操作栈 |
---|
var a = 10 | a = 10 | 10 |
++a | a = 11 | 11 |
var b = ++a + 2 | a = 12 | 12 |
| 14 | 12 + 2 |
console.log(b) | 14 | |
var c = 10;
c++;
var d = c++ + 2;
console.log(d);
console.log(c);
代码 | 变量 | 操作栈 |
---|
var c = 10 | c = 10 | 10 |
c++ | c = 1 | 10 |
var d = c++ + 2 | c = 12 | 11 |
| d = 13 | 11 + 2 |
console.log( d ) | 13 | |
console.log( c ) | 12 | |
var e = 10;
var f = e++ + ++e;
console.log(f);
console.log(e);
代码 | 变量 | 操作栈 |
---|
var e = 10 | e = 10 | 10 |
f = e++ + ++e | e = 11 | 10 |
| e = 12 | 12 |
| f = 22 | 10 + 12 |
console.log( f ) | 22 | |
console.log( e ) | 12 | |
- 4
console.log(4 >= 6 || ‘人’ != ‘阿凡达’ && !(12 * 2 == 144) && true)
步骤 | 分步代码 | 结果 |
---|
1 | ‘人’ != ‘阿凡达’ | true |
2 | 12 * 2 | 24 |
3 | 12 * 2 == 144 | false |
4 | !(12 * 2 == 144) | true |
5 | ‘人’ != ‘阿凡达’ && !(12 * 2 == 144) && true | true |
6 | 4 >= 6 | false |
7 | 4 >= 6 || ‘人’ != ‘阿凡达’ && !(12 * 2 == 144) && true | true |
- 5
var num = 10;
console.log(5 == num / 2 && (2 + 2 * num).toString() === ‘22’);
步骤 | 分步代码 | 结果 |
---|
1 | 5 == num / 2 | ture |
2 | 2 * num | 20 |
3 | 2 + 2 * num | 22 |
4 | (2 + 2 * num).toString() | ‘22’ |
5 | (2 + 2 * num).toString() === ‘22’ | true |
6 | 5 == num / 2 && (2 + 2 * num).toString() === ‘22’ | true |
- 升级案例
var i = 1;
i = i++;
var j = i++;
var k = i + ++i * i++;
console.log(i);
console.log(j);
console.log(k);
代码 | 变量 | 操作栈 |
---|
var i = 1 | i = 1 | 1 |
i = i++ | i = 2 | 1 |
| i = 1 | |
var j = i++ | i = 2 | 1 |
| j = 1 | |
var k = i + ++i * i++ | i = 2 | 2 |
| i = 3 | 3 |
| i = 4 | 3 |
| k = 11 | 2 + 3 * 3 |
console.log(i) | 4 | |
console.log(j) | 1 | |
console.log(k) | 11 | |