让你彻底搞明白i++与++i的区别

227 阅读1分钟

i++是先赋值,再自增;++i是先自增再赋值。 如何理解?直接看代码。

i++:

        let i = 1
        let b = i++  //i在还没自增的时候就先赋值给b,所以b的值为1,赋值后i再自增为2,此时i的改变已经不影响b的值了
        console.log(i,b)  // 2,1

++i:

        let i = 1 
        let b = ++i        //i先自增到2,自增完成后再把2赋值给b
        console.log(i,b); //2,2

好,相信你已经理解了i++和++i的区别了,再来看这道题:

        let i = 1
        let b = ++i + i
        console.log(i,b); // 2,4

分析:++i先自增再赋值,所以i先自增到2,再赋值给b,等等b还没运算完,还要再加一个i,i此时已经是2了,所以b的结果应该是4。(运算过程为b先被赋值为2,再加2)。

再来看另外一道题:

        let i = 1
        let b = i++ + i
        console.log(i,b); // 2,3

分析:i先赋值再自增,i等于1 的时候赋值给b,此时b的值为1,i再自增到2,等等,b的运算还没算完,还要再加一个i,此时i已经是2了,所以b最终结果为3。(运算过程为b先被赋值为1,再加2)

解题关键:假设b=1+2+3;运算过程应该是b先等于1;b再等于b+2,此时b等于3;b再等于b+3,b此时最终等于6。而不是先把1+2+3算出来等于6,再把6赋值给b

扩展:

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