一. 前言
这类题看似简单,但面试踩坑的童鞋年年有,掌握以下两大考(keng)点,从此 so easy。
二. 确定优先级,加括号
此类问题,首先要根据运算符的优先级,给表达式加上括号。不确定或不熟悉优先级的先看看 MDN优先级列表。
- 后置自增运算符的优先级 > 加法运算符的优先级
x+x++
// 根据后置自增运算符的优先级 > 加法运算符的优先级,加括号
x + (x++)
- 后置自增运算符的优先级 > 前置自增运算符的优先级
x+++x
// 根据后置自增运算符的优先级 > 前置自增运算符的优先级,加括号
(x++) + x
三. 顺序替换变量,得结果
- x + (x++)
x + (x++) // x=1
1 + (x++) // x = 1
1 + 1 // x = 2
2 // x = 2
// 因此
console.log(x + (x++)) // 2
console.log(x+x++) // 2
- (x++) + x
(x++) + x // x=1
1 + x // x = 2
1 + 2 // x = 2
3 // x = 2
// 因此
console.log((x++) + x) // 3
console.log(x+++x) // 3