js 前置递增(++...) 和 后置递增 (...++) 的差异原理

前置递增(++...)

let a = 1
console.log( a+++a )
// a+++a等同于(a++)+a,结果是2

编译器的处理过程:

    +
  /   \
 /     \
a        a++

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++ )
// a+a++等同于a+(a++),结果是3

编译器的处理过程:

    +
  /   \
 /     \
a++     a

1. push(a++), 即push(1),之后 a自增变成2
2. push(a),即push(2)
3. result = pop()+pop(), 出栈两个操作数(1,2)相加,得到3
posted @ 2021-04-20 15:19  曾经的点工  阅读(409)  评论(0编辑  收藏  举报