亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于運算符跟表達式副作用

關于運算符跟表達式副作用

達令說 2019-03-20 15:19:40
 var a = 1, c;        c = (a++) + a;    console.log(c); // 3問題來了,先執行a++,那a不就等于2了么最后應該是 c = (2) + 2,結果應該是4才對啊,為什么最后會是3++不是有個隱式賦值么,為什么這里的a不會受到副作用影響?
查看完整描述

2 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

a++是先返回值在進行本身運算的
++a是先進行本身運算在返回值的

所以這個表達式(a++) + a; 運算邏輯為: 先返回(a++)的值為 a等于 1,然后在進行 ++運算這時a=2所以c=3;

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


查看完整回答
反對 回復 2019-03-26
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

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;


查看完整回答
反對 回復 2019-03-26
  • 2 回答
  • 0 關注
  • 578 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號