var data = [7,8,9];
var i = 0;
data[i++] *= 2;数组data和i的值var data = [7,8,9];
var i = 0;
data[i++] = data[i++] * 2;数组data和i的值又是多少有没有大佬帮忙解释下为啥第一个表达式结果> data[0]
14
> data[1]
8
> data[2]
9
> i
1第二个结果> data[0]
16
> data[1]
8
> data[2]
9
> i
2
1 回答
pardon110
TA贡献1038条经验 获得超227个赞
相信你对第一个表达式结果没有任何疑问。关键在于第二个,本质是在js中[]运算符的优先级与.和()及.号同级属最高级别,而赋值及赋值运算符=是优先级倒数第二低的(最低级的是,逗号多重求值)。
明确[]运算符等级最高,在同级运算符中遵循从左往右计算,不同优先级,等级高的先执行。
其次i++的问题,先取后算
比如i=0;打印 3+i++ 其结果是3,但接着打印i则值为1
分析
i=0; data[i++]=data[i++]*2;
[]内运算最先执行,先做左侧[]后右侧[]
左侧取先第一次用i值为data[0],轮到右则[],会再次取i值,而此时i值为左侧i++计算后的值,即i为1
故作乘法运算时为data[0] = data[1] *2
然后执行右侧乘法运算,将结果结data[0]
后续再打印i值时,i的结果是上自增后的值2
添加回答
举报
0/150
提交
取消