javascript的带操作符的赋值运算

看犀牛书发现的问题

下面两个表达式

表达式一 data[i++] *= 2;
表达式二 data[i++] = data[i++] * 2;
 
var data = [7,8,9];
var i = 0;
data[i++] *= 2;

结果

> data[0]
14
> data[1]
8
> data[2]
9
> i
1

 

var data = [7,8,9];
var i = 0;
data[i++] = data[i++] * 2;

结果

> data[0]
16
> data[1]
8
> data[2]
9
> i
2

 

理解一波第二个表达式

https://www.imooc.com/wenda/detail/453253

  • []内运算最先执行,先做左侧[]后右侧[]

  • 左侧取先第一次用i值为data[0],轮到右则[],会再次取i值,而此时i值为左侧i++计算后的值,即i为1

  • 故作乘法运算时为data[0]  = data[1] *2

  • 然后执行右侧乘法运算,将结果结data[0]

  • 后续再打印i值时,i的结果是上自增后的值2

posted @ 2018-11-16 10:31  钰蛋  阅读(289)  评论(0编辑  收藏  举报