weibo_瘞鹿鳴佐_0
2018-11-16 10:38:24
var?data?=?[7,8,9];
var?i?=?0;
data[i++]?*=?2;數(shù)組data和i的值var?data?=?[7,8,9];
var?i?=?0;
data[i++]?=?data[i++]?*?2;數(shù)組data和i的值又是多少有沒有大佬幫忙解釋下為啥第一個表達式結(jié)果>?data[0]
14
>?data[1]
8
>?data[2]
9
>?i
1第二個結(jié)果>?data[0]
16
>?data[1]
8
>?data[2]
9
>?i
2
1 回答

pardon110
TA貢獻1038條經(jīng)驗 獲得超227個贊
相信你對第一個表達式結(jié)果沒有任何疑問。關(guān)鍵在于第二個,本質(zhì)是在js中[]運算符的優(yōu)先級與.和()及.號同級屬最高級別,而賦值及賦值運算符=是優(yōu)先級倒數(shù)第二低的(最低級的是,逗號多重求值)。
明確[]運算符等級最高,在同級運算符中遵循從左往右計算,不同優(yōu)先級,等級高的先執(zhí)行。
其次i++的問題,先取后算
比如i=0;打印 3+i++ 其結(jié)果是3,但接著打印i則值為1
分析
i=0; data[i++]=data[i++]*2;
[]內(nèi)運算最先執(zhí)行,先做左側(cè)[]后右側(cè)[]
左側(cè)取先第一次用i值為data[0],輪到右則[],會再次取i值,而此時i值為左側(cè)i++計算后的值,即i為1
故作乘法運算時為data[0]? = data[1] *2
然后執(zhí)行右側(cè)乘法運算,將結(jié)果結(jié)data[0]
后續(xù)再打印i值時,i的結(jié)果是上自增后的值2
添加回答
舉報
0/150
提交
取消