我来告诉你怎么计算i++ + ++i + i++以及为什么i++和++i区别这么大?

来源:互联网 发布:淘宝子账户认证 编辑:程序博客网 时间:2024/04/25 00:31

先来看原理:

  • 我们知道,++作为后置递增时,优先级为16,而作为前置递增时,优先级为15
  • =作为赋值运算符时,优先级为3
  • 所以,++会优先于=而执行

结论:

当运算符在操作数之前,称为前增量运算符,它对操作数进行增量操作,并返回计算后的值{var i=1;j=++i;(实际上j=i+1)}

当运算符在操作数之后,称为后增量运算符,它对操作数进行增量操作,但返回未做增量计算的值{var i=1;j=i++;(实际上j=i)}

i++的结果i=i+1; (i++)这个表达式的值是i(未做增量计算的值

++i的结果i=i+1; (++i)这个表达式的值是i+1(计算后的值

口决:

i++ :先引用后增加

i++  :先在i所在的表达式中使用i的当前值,后让i加1
++i  :先增加后引用


++i :让i先加1,然后在i所在的表达式中使用i的新值

例:

var i=1,j=i++;console.log(i);console.log(j);返回i是2,j是1,j返回未做增量计算的值

var i=2,j=i++;返回i选先赋值j再自增,所以j=i=2;  i=i+1=3;

var i=1,j=++i;console.log(i);console.log(j);返回i和j都是2,j返回计算后的值

var i=2, j=++i; 返回i先运算+1再赋值给J,所以J=(2+1)  i=1+i=3;


再例如:

var i=2;j=i++ + ++i;//j=2 + (3+1)//i=(2+1) + 再把前面的3转给++i,所以i结果为4
结果j是6;i结果是4


最后再来个例子:

var i=2;j=i++ + ++i + i++;//如果写成j=i+++++i+i++;也要能分析出来//计算j的步骤:
//(先i赋值给j再自增所以在这里j=2,i=3); 
//+(这里i先自增i=i+1=3+1=4”注意i到这里因前面i++自增过变成3,再++i变成4“,再把i=4赋值给j,所以这里的j=4,i=4)
//+(这里i先赋值给j所以把上一步的i=4赋值给j,再自增i=4+1,所以这里i=5,j=4)
//所以j到最后一步变成 J=2+4+4=10;//所以i到最后一步变成i=5

当然,- - i 与 i - -也是一样的原理,这里就不再举例说明了

相信经过上面的计算,以后对于i++和++i计算应该是没问题了!



原创粉丝点击