JS ++i和i++的区别

首先我们先来看两段简单的代码。

    let a = 1;
    let b = ++a;
    console.log(a);  //2
    console.log(b);  //2
    let a = 1;
    let b = a++;
    console.log(a);  //2
    console.log(b);  //1

从上面两个例子来看,如果是对于自增变量来说,两者之间是没有区别的。但是如果对于被赋值的变量来说,二者就产生差别,一个是成功赋值,一个则是赋值到自增前的值。

其实产生这种结果的原因,是因为如果我们在变量前面加++的时候,JS内部会对变量先进行自增,然后再对自增后的结果赋值给等号左边的变量。当我们把++放到变量后面的时候,JS内部则会先将目前的值赋值给等号的变量,再进行自增。

因此我们可以得到以下结论:++在变量前是先自增再赋值,++在变量后是先赋值再自增。


明白了++在变量前和变量后的区别后,让我们再来看两段代码。

    let a = 1;
    let b = 0;
    let c = a +++ b;
    console.log(c); //1
    console.log(a); //2
    console.log(b); //0

从上述代码中可以看出,若我们写连续三个+的时候,系统默认会把它解析为let c = a++ +b;因此是a先与b相加然后赋值给c,最后再自增。

若如果我们给三个+中间添加空格,则运算的结果却发生了改变,例子请看以下代码。

    let a = 1;
    let b = 0;
    let c = a + ++b;
    console.log(c); //2
    console.log(a); //1
    console.log(b); //1

从上述代码中,我们给+添加了空格,则结果就变成了b先自增然后再跟a相加最后赋值给c。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值