++i和i++区别在于运算顺序和结合方向。
js中有两种自加运算,其运算符粗慧尺均为++,功能为将运算符自加1.
其中:
++VAR被称为前自加,其后面的变量执行自加操作,其运算为,先执行自加操作,再引用VAR值。
VAR++被碧顷称为后自加,其前面的变量执行自加操作,其运算为,先引用VAR值,再进行自加操作。
如果自加语句独立成为一个单独的语句,那么前后自加是完全相同的。
比如单独的一行
a++;和++a;是一样的。
再比如,常见的for循环:
for(i = 0; i < 100; i ++)
for(i = 0; i < 100; ++i)
这里用到的++i和i++是完全相同的,岩高没有区别。
当运算变量本身值会在自加语句中,同时执行其它操作,二者就有区别了。
比如
var i =0;
while(i++<10);
i会先和10比较大小,然后执行自加。这样当i=10时,退出循环,再执行一次自加,退出后i值为11。
而如果写成
while(++i<10);
是先执行自加,然后再与10比较。这样在i=9时,先自加,得到i=10,然后比较就会退出循环了。这种情况下,退出后i值为10。
再举一个例子。
var a, i = 10;
a = i ++; //这里i要先赋值,再自加。语句执行后a=10, i = 11;
而如果写成:
var a, i = 10;
a = ++i; //这里i要先自加,再赋值。语句执行后a=11, i = 11;
由于自学有些观点会比较可笑,很多时候依赖各种搜索寻求答案;
就前++与纤陪闹后++,或前--与后--,折磨许久找不到能深刻理解它的方式特别堵毁罩。
暂用下列方式解读它
var y=10;
var x=y++;
//撇开++符号不看它 x=y 是先赋值行为x=10,然后++符号理解成y自加。结乱凳果为x=10,y=11
var y=10;
var x=++y;
//x不能被赋值为+号,因此等待有效数值,y自加等于11而后自赋值。结果为x=11,y=11