js中i++与++i的区别

导语

在javascript中,我们常常搞不懂i++与++i的区别,今天我们就来简单说一下。

i++的例子:

    var i=1;
    console.log(i); // 输出1

    var a=i++;
    console.log(i); //输出2
    console.log(a); //输出1
++i的例子:

    var i=1;
    console.log(i);

    var a=++i;
    console.log(i); //输出2
    console.log(a); //输出2
解释

我们通过两个例子,可以看出其中不同,当使用i++赋值给a后,a的值为1,而使用++i赋值给a后,a的值为2,而两例中i最终都为2

可见:
* 使用i++时,i先将自身的值赋值给变量a,然后再自增1
* 使用++i时,i先将自身的值自增1,再将自增后的值赋值给变量a

原理:
运算符优先级
  • 我们知道,++作为后置递增时,优先级为16,而作为前置递增时,优先级为15
  • =作为赋值运算符时,优先级为3
  • 所以,++会优先于=而执行
++运算符前置与后置的区别

我们看看MDN上对该运算符的说明:

If used postfix, with operator after operand (for example, x++), then it returns the value before incrementing.
If used prefix with operator before operand (for example, ++x), then it returns the value after incrementing.

简单翻译:

如果该运算符作为后置操作符,则返回它递增之前的值;
如果该运算符作为前置操作符,则返回它递增之后的值

所以,我们就知道, ++运算符会返回一个值,如果前置,则返回操作对象递增之后的值,如果后置,则返回操作对象递增之前的值。

var a = i++时,实际上做了如下操作

    i=1
    j=i; 
    i=i+1;
    a=j;

var a = ++i时,实际上做了如下操作

    i=1
    j=i+1;
    i=i+1
    a=j;
拓展

设i=1,a = (i++)+(i++)+(++i)

那么a的值是?

我们可以将该运算简化为:


    var i =1;

    b=function(){

        var j;
        j=i;
        i=i+1; //2


        return j; //1

    };

    c=function(){

        var m;
        m=i; //2
        i=i+1; //3

        retrun m; //2

    };

    d=function(){

        var n;
        n=i+1; //4
        i=i+1; //4

        return n; //4

    }

    var a = b + c +d;

    a=1+2+4=7;

所以当i=1,a = (i++)+(i++)+(++i)=1+2+4=7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值