在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 關(guān)于運(yùn)算符跟表達(dá)式副作用

關(guān)于運(yùn)算符跟表達(dá)式副作用

    var a = 1, c;
    
    c = (a++) + a;
    console.log(c); // 3
問(wèn)題來(lái)了,先執(zhí)行a++,那a不就等于2了么

最后應(yīng)該是 c = (2) + 2,結(jié)果應(yīng)該是4才對(duì)啊,為什么最后會(huì)是3

++不是有個(gè)隱式賦值么,為什么這里的a不會(huì)受到副作用影響?
回答
編輯回答
情未了

a++是先返回值在進(jìn)行本身運(yùn)算的
++a是先進(jìn)行本身運(yùn)算在返回值的

所以這個(gè)表達(dá)式(a++) + a; 運(yùn)算邏輯為: 先返回(a++)的值為 a等于 1,然后在進(jìn)行 ++運(yùn)算這時(shí)a=2所以c=3;

如果你的表達(dá)式為(++a) + a;那么結(jié)果就為4

2017年5月31日 21:14
編輯回答
絯孑氣

c = (a++) + a is equivalent to the following:

var t1 = a;
a++;
var t2 = a;
c = t1 + t2;

In which t1 is 1 and t2 is 2, which is leading to the result 3.

And if you write the code like c = (++a) + a, it will be interpreted as the following:

a++; // or more precisely, ++a
var t1 = a;
var t2 = a;
c = t1 + t2;

And you will get 4;

2017年10月30日 01:14