为了账号安全,请及时绑定邮箱和手机立即绑定

為什麼"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下载
官方微信