document 這一句就是你的第 16 行,我們簡稱 16,16 未屏蔽時,是屬于 if 語句體的,而后面的 C 循環則是獨立于 if 語句,不受 if 的影響,所以每當 B 循環一次,C 都要完整的循環 4 次,這 4 次 C 的循環會打印一個 小A,(這里我們先拿 小A 舉例,其他的類推),而 B 一共會循環 4 次,所以 C 就會打印出 4 個 小A,在第 4 次打印 小A 之前,if 語句條件滿足,會走 16,所以先打印一次數組。
當 16 屏蔽,由于 if 未加大括號 {},會默認將緊隨其后的一句代碼歸入 if 語句體,這里的 C 循環是一個整體,緊隨 if 之后,所以被歸入 if 語句體,那么也就是說,只有當 if 語句條件滿足時,C 循環才會發生。而在 B 循環的 4 次循環中,if 語句只會滿足一次,就是 “大一” 那次,這時 C 發生 4 次循環,打印一個 小A,然后 B 循環結束,A 循環進入下一次循環。所以最后你得出的結果是正確的。
2016-10-10
這個問題可能當面講很好理解,通過打字有點難說清,我試著說說
首先明確,你的代碼中嵌套了三個 for 循環,
其實可以看到,你的 B 和 C 兩個循環是一樣的,有冗余,這里先不討論,先解釋為什么出現你說的現象。
你的 B 循環內,C 循環之前有兩句代碼,
document 這一句就是你的第 16 行,我們簡稱 16,16 未屏蔽時,是屬于 if 語句體的,而后面的 C 循環則是獨立于 if 語句,不受 if 的影響,所以每當 B 循環一次,C 都要完整的循環 4 次,這 4 次 C 的循環會打印一個 小A,(這里我們先拿 小A 舉例,其他的類推),而 B 一共會循環 4 次,所以 C 就會打印出 4 個 小A,在第 4 次打印 小A 之前,if 語句條件滿足,會走 16,所以先打印一次數組。
當 16 屏蔽,由于 if 未加大括號 {},會默認將緊隨其后的一句代碼歸入 if 語句體,這里的 C 循環是一個整體,緊隨 if 之后,所以被歸入 if 語句體,那么也就是說,只有當 if 語句條件滿足時,C 循環才會發生。而在 B 循環的 4 次循環中,if 語句只會滿足一次,就是 “大一” 那次,這時 C 發生 4 次循環,打印一個 小A,然后 B 循環結束,A 循環進入下一次循環。所以最后你得出的結果是正確的。
你的代碼沒必要這樣寫,在課程下面的 “同學代碼”中,有很多同學的代碼,都寫得不錯,你可以看看,參照一下。
2016-10-10
for(var i=0;1<infos.length;i++){
????if(infos[i][3]="大一"){
????????????if(infos[i][1]="女生'"){
????????????????????? document.write("infos[i][0]") ?;
????????}
????}
}
2016-10-10
??? for(var j=0;j<infos[i].length;j++){
?? ??? ???? if(infos[i][j]=="大一")
?? ??? ??? ?document.write(infos[i]+"<br/>");
這里的代碼是判斷一行中所有符合你的條件“大一”的一個循環,你設置你每循環一次就打印一次
2016-10-10
因為你是在循環里面輸出數組信息啊,除了16行還有20行。其實不需要那么麻煩的,用一個循環和一個判斷語句就可以完成這個練習了。