當第五行為"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>
為什麼會有這樣子的差異?
一.从上开始运算
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
<!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>
代码是逐行执行的。。。。-/+在前 就说明先执行自增或自减 在执行这一行。反之你懂得
test1=a++可以分解为
test1=a;
a=a+1;
test2=--a可以分解为
a=a-1;
test2=a;
先后的问题
a--是先运算再自减。如果你你还不理解,或者你想加深理解,可以再下面加一行text2的输出,你就会发现有变化了
先后顺序的问题,a--,是先运算一轮后在减去1,而--a,是直接减去1,在进行运算,
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。
a++是先传参再+1,所以a=6;a--是a先传参再-1,所以test2=a,test=6;同理,a++,a=6,--a是先-1,所以此时a=5;test2=5.