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

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什麼"a--"與"--a"算出來的答案會不同?

當第五行為"a--",網頁顯示為"6":

<script?type="text/javascript">
??var?a,test1,test2;
??var?a=5;?
??test1?=?a++;
??test2?=?a--;
??document.write(test2);
</script>

當第五行為"--a",網頁顯示為"5":

<script?type="text/javascript">
??var?a,test1,test2;
??var?a=5;?
??test1?=?a++;
??test2?=?--a;
??document.write(test2);
</script>

為什麼會有這樣子的差異?

正在回答

9 回答

一.從上開始運算

a=5;

test1=a++ 可以看成 test1=a,a=a+1;(即test1=5, a=6);

test2=a--可看成test2=a, a=a-1;(上面運算得a=6, 即test2=6, a=6-1);

運算得 test2=6

二. a=5

test1=a++ ,同上: test1=5,a=6;

test2=--a , 可以看成 a=a-1, test2=a ;(即 a=6-1 , test2=a )

運算得 test2=5

1 回復 有任何疑惑可以回復我~
#1

sz_yeefun 提問者

非常感謝!
2016-08-19 回復 有任何疑惑可以回復我~
<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/>
<title>JS基礎</title>
<script?type="text/javascript">
?var?c=1;
?var?a=1
?document.write(++c+"<br/>");
?document.write(a+++"<br/>");
?document.write(++c+"<br/>");
?document.write(a+++"<br/>");
</script>
</head>
<body>
</body>
</html>


1 回復 有任何疑惑可以回復我~
#1

qq_謎離_03319966

這段代碼試下就理解了 ++a是先做運算 在把值賦給a a++是先賦值給a 在做運算
2016-10-12 回復 有任何疑惑可以回復我~

代碼是逐行執行的。。。。-/+在前 ?就說明先執行自增或自減 在執行這一行。反之你懂得

1 回復 有任何疑惑可以回復我~

test1=a++可以分解為

test1=a;

a=a+1;

test2=--a可以分解為

a=a-1;

test2=a;

0 回復 有任何疑惑可以回復我~

先后的問題?

0 回復 有任何疑惑可以回復我~

a--是先運算再自減。如果你你還不理解,或者你想加深理解,可以再下面加一行text2的輸出,你就會發現有變化了

0 回復 有任何疑惑可以回復我~

先后順序的問題,a--,是先運算一輪后在減去1,而--a,是直接減去1,在進行運算,

0 回復 有任何疑惑可以回復我~

a=5

都執行test=a++后,a=6

a--是先輸出他原來的6再執行a=a-1運算

a--的數值相當于:6 5 4 3 2 1 ……

--a是先運行a=a-1再進行輸出

--a的數值相當于:5 4 3 2 1……

test1都是寫在test2上面的,就要先執行test1

第一個test1=a++先在a的基礎上加1,即a=6,再執行test2=a--就得到了a=6。

第一個test1=a++先在a的基礎上加1,即a=6,再執行test2=--a就得到了a=5。


0 回復 有任何疑惑可以回復我~

a++是先傳參再+1,所以a=6;a--是a先傳參再-1,所以test2=a,test=6;同理,a++,a=6,--a是先-1,所以此時a=5;test2=5.

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什麼"a--"與"--a"算出來的答案會不同?

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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