关于后置++的问题

文章讨论了JavaScript中后置++运算符的常见误区,作者分享了一次编程中关于点击按钮自增事件的错误理解和修正,揭示了操作数栈在执行过程中的作用。
摘要由CSDN通过智能技术生成

文章出现的原因是代码遇到了问题,关于++的问题,所以在此进行一些总结

一、前置++和后置++的区别

前置++的运算过程是先计算,后赋值(先执行++,后执行赋值=)

let a = 0
let i = ++a
console.log(i)//1

后置++的运算过程是先赋值,后计算(先执行赋值=,后执行++)

注意!!!

后置++可以浅显的理解为上面所说,但整个过程并不是简单如此

由于本次的重点不是这个,所以就在此一笔带过了,相信了解的人也了解两者的区别

二、关于后置++的问题(重点)

1.代码

先将一下,本人在某段时间突然脑子短路,写了一个点击自增的事件,代码如下

const btn = docuement.querySelector('button')
let i = 0
btn.onclick = function() {
    // 我当时以为效果是一个自增
    i = i++
    console.log(i)
}

最后我写完进行点击时发现打印的结果一直为0,也就是没有实现自增的效果

2.错误理解

后置++时先赋值后自增,所以i先被赋值为0,然后自增为1;

但为何打印结果却一直是0呢?

3.正确理解

i = i++这段代码在栈的流程:
1).i这个数(0)会放到操作数栈;(操作数栈:0   局部变量表:空)

2).从操作数栈存储到局部变量表;(操作数栈:空   局部变量表:0)

3).从局部变量表加载到操作数栈;(操作数栈:0   局部变量表:0)

4).局部变量表中的数进行自增(i自增成1);(操作数栈:0   局部变量表:1)

5).从操作数栈存储到局部变量表。(操作数栈:空   局部变量表:0)

整个过程用代码可以这样理解

let i = 0
let temp = i //把变量i存到临时变量中
i = i + 1 //进行自增
i = temp  //进行赋值

以上便是本次的分享,如有问题可以私信或评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值