相信对于初学者来说 i++ 和 i++,一直特别容易混淆的内容,在我们刚刚接触的时候老师讲的时候也是一笔带过,所有说可能有很多人到现在都还是比较迷糊的状态。
今天我就用的我的理解来讲讲他们的区别。
首先我们先来看一段代码
<script>
var i = 1;
var j = 1;
i ++;
j ++;
var result = i == j ? true: false;
console.log(result);
</script>
通过赏面的代码可以看出 i++和 ++i在单独使用的时候产生的效果是一样的。
所以说i++ 和 ++i 在单独使用的时候 就都可以看做是 i = i + 1;
那么它们的区别又在哪呢?我们再来看一段代码。
<script>
var i = 1,
j = 1;
var a = 1,
b = 1;
a = a + ++i;
b = b + j++;
console.log("i:" + i);
console.log("j:" + j);
console.log("a:" + a);
console.log("b:" + b);
</script>
j和i最后值都为2所以说 j 和 i 都自增了,那么我们可以通过a和b的值推断 i++ 和 ++i 只是在参与运算的时间上不同。
a = a + ++i;
的运算顺序是 i先自增再参与 运算中
a = a + i++
的运算是先参与运算,i 再自增
拓展分析:
<script>
var i = 1;
var a = (i++)+(i++)+(++i);
console.log(a);
</script>
让我们来分析一下为什么最后的结果;
只有第三个是加号在前,所以我们就应该先对第三个里面的i进行加加的操作此时i的值已经是2了,在观察1和2都是加加在后面,我就只接从左往右计算了,1号再进行加加操作 i的值来到了3, 2号再进行加加操作 i 的值来到了4,所以说最后的结果为7。
大家可以把小括号去掉看看结果是多少是不是和自己分析的一样。