i++和++i的问题?

var a = [1,2,3,4];
var i = 1;
console.log(a[i++]);//2
console.log(a[i++]);//3

为什么第一个输出是2,而不是3呢?

阅读 2.5k
5 个回答

i++是后加 先返回i值,再给i+1,意思是console.log(a[i++]);//2
这句先执行console.log(a[i]);然后再i = i+1;
搜一下前加 后加

i++是先i后i+1,而++i就是i+1

算法优先级问题。
i++是先把i用了、再+1
而++i是先+1以后,再用这个i

这是执行顺序的问题,
i++在后为 先赋值,后运算
++i在前为 先运算,后赋值

所以看起来像这样

var i = 1
console.log(i) // i=1
i = i + 1 // = 2
console.log(i) // i=2
i = i + 1 // = 3
var a = [1,2,3,4];
var i = 1;
//console.log(a[i++]);//2
console.log(a[i]);
i = i + 1;


console.log(a[i++]);//3
console.log(a[i]);
i = i + 1;



//console.log(a[++i]);
i = i + 1;
console.log(a[i]);
推荐问题