i=i++;a=a++;后置递增递减运算符详解

关于这段代码,如果有被迷惑过的同学,可能会很熟悉

let i = 0;
i = i++;
console.log(i);

结果输出为:0

关于 i=i++ 或者a=a++ 的问题,在百度上一搜一大堆,很多文章会直接通过汇编来看内存中是如何操作,还有一些是说这个问题,其实在早年是没有直接定义的,有些非常的老的编译器,可能会输出1,但是现在的编译器几乎不可能输出1,都是一样的结果为 0。这个问题早就不存在歧义了,但是在开发中几乎不会用到复杂的后置递增递减运算符。

对于网上文章的剖解,大部分都是长编大论,没有一个具体的总结,而且涉及的知识也非常多,导致像我这种小菜鸡,看的灰常麻木。

所以根据他们的文章我得出了一个非常短暂的总结:

前置递增或者递减:先递增复制,递减同理。

后置递增或者递减:先复制递增,递减同理。

重点复制递增或递减 这个两个步骤虽然执行顺序会不一样,但是执行步骤是相连的,不会被分开执行。

还有一点需要注意:

请看代码

let a = 1;
console.log(a++);
console.log(a);

第二行代码 a++ 运算符返回的值是复制的副本,并不是原数据本身,也就是说执行到a++的时候就已经递增了,只不过递增的是原数据的值。而第三行代码返回的是原数据本身。
要把递增递减运算符看成一个整体,所以递增递减运算符的执行步骤是不可分开的(多哔了一句)。

前置递增递减运算符返回的值一样是复制的副本,并不是数据本身,只不过前置递增是先递增再复制,所以副本和原数据的值是一样的,不会造成疑惑。

语句或者表达式操作的是递增或者递减运算符的副本,并不是原数据。

看视频

看完总结,你可能会觉的,这啥玩意啊!我知道你很急,但是你先别急,看视频讲解。

视频主要是围绕着后置递增或递增来讲解的,因为前置递增或递减是没有异议的,无需说明。

请点击视频链接
ppt动画
测试代码

资料在百度网盘中,如果要提取码,那么就是:1111

38号:我为这个结论负责

参考资料:1、2、3、4、


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部