a=a++與a++的問題
<!DOCTYPE ?HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制語句</title>
<script type="text/javascript">
?//第一步把之前的數(shù)據(jù)寫成一個(gè)數(shù)組的形式,定義變量為 infos
?var infos=[
? ? ?['小A','女',21,'大一'],
? ? ? ? ? ? ['小B','男',23,'大三'],
? ? ? ? ? ? ['小C','男',24,'大四'],
? ? ? ? ? ? ['小D','女',21,'大一'],
? ? ? ? ? ? ['小E','女',22,'大四'],
? ? ? ? ? ? ['小F','男',21,'大一'],
? ? ? ? ? ? ['小G','女',22,'大二'],
? ? ? ? ? ? ['小H','女',20,'大三'],
? ? ? ? ? ? ['小I','女',20,'大一'],
? ? ? ? ? ? ['小J','男',20,'大三']
?];
?//第一次篩選,找出都是大一的信息
?var arrar=new Array();
? var a=0;
?for(var i=0;i<infos.length;i++){
? ? ?if(infos[i][3]=="大一"){
? ? ? ? ?document.write(infos[i]+"<br>")
? ? ?arrar[a]=infos[i];
? ? ?a++;
? ? ?}
?}
?//第二次篩選,找出都是女生的信息
?document.write("<br>"+"第二次篩選出來的"+"<br>");
?for(var j=0;j<arrar.length;j++){
?if(arrar[j][1]=='女'){
? document.write(arrar[j][0]+"<br>");
?}
?}
</script>
</head>
<body>
</body>
</html>
這里是a++,能得到答案?
小A,女,21,大一
小D,女,21,大一
小F,男,21,大一
小I,女,20,大一
第二次篩選出來的
小A
小D
小I
但里面的a++換成a=a++之后,答案就變成了:
小A,女,21,大一
小D,女,21,大一
小F,男,21,大一
小I,女,20,大一
第二次篩選出來的
小I
求大神解答這是為什么
2016-12-28
我試了一下,a++是自加,每次循環(huán)都加一,所以使用a++時(shí),第一次篩選之后arrar[]有四個(gè)變量,array[][]中含有大一學(xué)生的信息,可以供第二次篩選使用。
但是 a=a++代表著什么呢?a自己加一,然后把加一前的值又付給了a,所以a是不變的,第一次篩選的循環(huán)里,a[]的長度始終是1,a[0]的值被不斷刷新,最后留下了最后一個(gè)符合要求的,a=[? ?['小I','女',20,'大一'] ?],所以你第二次篩選的時(shí)候,只能出來小I,因?yàn)榈谝淮魏Y選的錯(cuò)誤的.
2016-12-28
a++是先用后加,++a是先加后用。比如說:對(duì)于a=1,執(zhí)行b=a++時(shí)相當(dāng)于先后執(zhí)行b=a,a++,因而b=1,a=2。而執(zhí)行b=++a時(shí)相當(dāng)于先后執(zhí)行a++,b=a,因而a=2,b=2。而你的問題中的a=a++,你可以嘗試打出a的值,你的a的值應(yīng)該永遠(yuǎn)等于0,你的第二次數(shù)組里存的永遠(yuǎn)是最后一個(gè),你第二次篩選的自然就是錯(cuò)誤的結(jié)果
2016-12-28
a++的意思是a=a+1,當(dāng)a=0時(shí)a會(huì)先自增+1然后再賦值給a,a的值會(huì)是0.1.2.3。a=a++:等號(hào)右邊的a會(huì)先賦值給左邊的a(a的初值為0,a=a,a=0;),然后右邊的a再自增1,但是自增過不會(huì)再賦值給左邊的a,所以左邊的值會(huì)一直為0,循環(huán)第一次時(shí)arrar[0]=A,第二次時(shí)a還是0,arrar[0]=D,此時(shí)他就會(huì)把前面的arrar[0]=A覆蓋,以此類推最后結(jié)果就是arrar[0]=小I。如果你把a(bǔ)=a++換成a=++a,結(jié)果就會(huì)變成正常結(jié)果,a=++a會(huì)先自增1再賦值,和a++效果一樣。你可以自己研究一下b=a++和b=++a的區(qū)別。
2016-12-28
a++的意思就是a+=1 ?也就是a = a+1,干嘛前面還要加個(gè)a=a++