a++与++a都相当于把a+1赋值给a本身。但不同的是:
a++:先执行语句后赋值
++a:先赋值后执行语句,且比a++有计算优先级
给个例子:
var a = 10;
a++; //return 10 a在该步骤没有赋值,下一步赋值
document.write(a); //return 11 该步骤赋值和输出
var a = 10;
++a; //return 11; a在这一步骤就赋值
document.write(a); //return 11 输出
几个具体的计算案例:
var a = 10;
a++; //返回10 a在该步骤没有赋值,下一步赋值
++a; //返回12 a++赋值为11,再计算++a为12,输出
var x = 10;
++x; //return 11 a在这一步就赋值
x++; //return 11 a在该步骤没有赋值,所以输出还是11
var a = 1;
var b = a++ + 1; // a在该步骤没有赋值,下步骤赋值
document.write(a); //return 2 该步骤赋值和输出
document.write(b);// return 2 因为输出是在var b基础上的,而var b的那一步a没有赋值
var a = 1;
var b = a-- + --a; //先计算--a,为0 再把0赋值为a-- 还是0(--a比a--有优先计算权)
document.write(b); //return 0
var a = 1;
var b = a++ -1 + ++a; //先计算++a为2,再赋值给a++还是为2
document.write(b); // return 3
var a = 1;
var b = --a + --a; //计算--a为0,再赋值为-1
document.write(b); //return -1