(1)如果只是看i++和++i,这两个是等价的,都等同于i=i+1,都是变量自身加1。
(2)在一般情况下,它们都是跟赋值联系在一起。 比如:var a; a=i++; //将i的值赋值给a,即a=i;然后再执行i=i+1;也就是【a=i++;】与【a=i; i=i+1;】等价。a=++i; //将i+1的值赋给a,即a=i+1;然后再执行i=i+1;也就是【a=++i;】与【a=i+1;i=i+1;】等价。(3)【总结一下】 ①前置++是将自身加1的值赋值给新变量,同时自身也加1; ②后置++是将自身的值赋给新变量,然后才自身加1.
var i = 0;var a = i++;console.log(a); // 0 [ a=i; i=i+1 ];console.log(i); // 1var b = ++i;console.log(b); // 2 [ b=i+1; i=i+1 ];console.log(i); // 2var a = 0;a = ++a + a++ + a++ + a++ + a++; // 11 [1 + 1 + 2 + 3 + 4]
参考:知乎 行人要走人行道的回答 链接:https://www.zhihu.com/question/19811087/answer/83748442