a+a++和a+++a的区别

193 阅读1分钟
let a = 1
console.log( a+++a )
//3

编译器的处理过程:

  1. push(a), a入栈(1)
  2. push(a++),即push(1),之后 a自增变成2
  3. result = pop()+pop(), 出栈两个操作数(1,1)相加,得到2
let a = 1
console.log( a+a++ )
//2

编译器的处理过程:

  1. push(a++), 即push(1),之后 a自增变成2
  2. push(a),即push(2)
  3. result = pop()+pop(), 出栈两个操作数(1,2)相加,得到3