JavaScript之有趣的++ | —— 运算

1. i++ 和 ++i的区别

i++是先赋值再运算,++i是先运算再赋值

1
2
3
var i = 1;
++i; //此时i先自增加1变为2,然后再以2的值来进行运算
i++; //此时i的值为1来参与运算,然后当运算完了之后i的值再自增加1变为2

可能在上面大家有点看不出来区别,那我就给大家再写一个明显的例子:

1
2
3
4
5
6
     					var i = 1;
var j = (i++) + (++i);
按照计算的步骤结果: 1 + (2+1) = 4
每一步完成后i的值: 2 3
console.log(j); // 4
console.log(i); // 3

如果你理解了上面的真实步骤,那么我再把难度升一下级,我们再来深刻的理解一下++i和i++的区别。

1
2
3
4
5
6
								var i = 1;
var b = i++ + ++i * ++i - ++i - ++i;
按照计算的步骤结果是: 1 3 4 5 6
每一步完成后i的值: 2 3 4 5 6
console.log(b); //2
console.log(i); //6

如果你把上面的内容做对了,恭喜你已经真正的掌握了i++和++i。

i- - 和 - -i的区别

与i++类似:i- -是先赋值再运算,- -i是先运算再赋值。

1
2
3
var i = 1;
--i; //此时i先自减1变为0,然后再以0的值来进行运算
i--; //此时i的值为0来参与运算,然后当运算完了之后i的值再自减1变为-1

此时我还是用一个例子来让你看看–i和i–的区别。

1
2
3
4
5
6
								var i = 1;
var a = (i--) + (--i);
按照计算的步骤结果是: 1 -1
每一步完成后i的值: 0 -1
console.log(a); // 0
console.log(i); // -1

如果当你了解了i–和–i的区别之后,可以自己再手动出一些题,然后思考完之后再在编辑器中来验证自己的想法是否是正确的。