重要区别写在前面:
i++表示先赋值后自增,++i表示先自增后赋值
下面看几个例子
var i = 10;
++i; // ++i = 10 + 1 = 11; i = 11;
var j = ++i + 1; // ++i = 11 + 1 = 12; i = 12; j = 12 + 1 = 13;
console.log(j); // 13
console.log(i); // 12
var i = 10;
i++; // i++ = 10 + 1 = 11; i = 11;
var j = i++ + 1; // i++ 表达式返回 11; j = 11 + 1 = 12; i = i++ = 11 + 1 = 12;
console.log(j); // 12
console.log(i); // 12
由上面两个例子可以看出:
- 当i++或者++i单独运算时,结果都为i = i + 1;
当混合运算时:
- i++应先返回表达式原值,再进行自增,然后进行后面计算
- ++i应先自增,然后进行接下来的计算
var i = 10;
var j = i++ + ++i; // i++返回10; i = 11; ++i = 11 + 1 = 12; j = 10 + 12 = 22; i = 12;
console.log(j); // 22
console.log(i); // 12