例子:
let a = 5;
let res1 = ++a + ++a;
let res2 = a++ + a++;
let res3 = a++ + ++a;
let res4 = ++a + a++;
console.log(res1)
console.log(res2)
console.log(res3)
console.log(res4)
运用浏览器输出结果如下:
运用浏览器单步执行:
我们先将res1-4分别打上断点,再刷新查看脚本中变量的结果:
分别如下:
我们在程序的最后一行输入console.log(a);得到a=13;
由此我们大概可以梳理出如下结果:
再看如下程序能得到理解:
let x = 0;
let y = 0;
console.log(x++);//输出0
//下面结果输出1,说明i++符合先计算再自加,i++的赋值运算输出的值不会加1,但i在赋值运算后自身会加1
console.log(x);
console.log(++y);// 输出1,这说明++i先自加再计算,++i的赋值运算输出的值会加1
console.log(y);// 输出1
由此我们可以推断出整个过程:
我们发现无论是a++还是++a最后a的结果都是加1的,只是+1执行的顺序不同。
总结:i++先计算再加1,赋值运算不加1.
++i自加1再计算,赋值运算都加1.
所以由此猜测出:++i的计算效率比i++要高。