我猜你还不会这道面试题 (x+x++ 与 x+++x)

376 阅读1分钟

一. 前言

这类题看似简单,但面试踩坑的童鞋年年有,掌握以下两大考(keng)点,从此 so easy。

二. 确定优先级,加括号

此类问题,首先要根据运算符的优先级,给表达式加上括号。不确定或不熟悉优先级的先看看 MDN优先级列表

  1. 后置自增运算符的优先级 > 加法运算符的优先级
x+x++
// 根据后置自增运算符的优先级 > 加法运算符的优先级,加括号
x + (x++)
  1. 后置自增运算符的优先级 > 前置自增运算符的优先级
x+++x
// 根据后置自增运算符的优先级 > 前置自增运算符的优先级,加括号
(x++) + x

三. 顺序替换变量,得结果

  1. 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
  1. (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