一、运算符与表达式
- 运算符按参与的运算单元数量分为:一元运算符、二元运算符和三元运算符;
- 表达式是运算单元和运算符一起构成的;
- 每个表达式都有一个运算后的返回值。
二、关于++运算符
1.概述
++运算符分为两部分,第一部分是返回运算结果,第二部分是变量自加1。
2.如果++在变量之后
- 先返回变量的值;
- 然后对变量自加1;
3.如果++在变量之前
- 先对变量自加1;
- 然后返回变量值;
4.演示
let a = 1;
let b = a++;
let c = ++a;
console.log(a, b, c); // 输出3, 1, 3
三、实战
1.题目
let a = 1;
let b = a++ + ++a * a++;
console.log(a, b);
2.解析
let a = 1;
let b = a++ + ++a * a++;
/**
第1步:
(1)由于++运算优先级高于*
(2)所以先运算第一个a++表达式
(3)这里先返回了a的当前值1,然后将a自加为2
(4)所以此时运算状态如下:
*/
a = 2;
b = 1 + ++a * a++;
/**
第2步:
(1)由于++运算优先级高于*
(2)所以还是先计算下一个++a表达式
(3)这里先自增a为3,然后返回a的值3
(4)所以此时运算状态如下:
*/
a = 3;
b = 1 + 3 * a++;
/**
第3步:
(1)同上,先进行最后一个a++表达式运算
(2)先返回值3,然后将a自增为4
(3)所以此时运算状态如下:
*/
a = 4;
b = 1 + 3 * 3;
/**
所以答案是:
a = 4;
b = 10;
*/