這篇內容,將會講解什麼是「for迴圈」,以及與「for迴圈」相關的知識。有了這些概念,各位會更容易理解,要如何設計程式碼。
本篇教學所使用的系統是Windows 10,如果有按鍵相關的說明,會用Windows的系統來解釋。如果你用的是Mac系統,再麻煩自行換成相對應的按鍵。
在學習本篇內容之前,最好具備以下的前置知識,以免看不懂這篇教學的內容。
如果我們希望,讓某段程式碼,重複執行N次,那我們就可以考慮使用「for迴圈」。
由於迴圈的種類有很多種,所以這種語法,通常都會稱呼為「for迴圈」,而不會簡稱為for,或是迴圈。
以下我們展示一段,for迴圈的使用範例:
//讓a++的程式碼,重複執行10次
for (var _i = 0 ; _i <= 9 ; _i ++) {
a ++ ;
}
我們可以把for迴圈,理解成下面5個步驟:
在上面的範例裡,我們定義了一個「_i
」的局部變數,並將他設定為0。
這個變數的用途,是用來判定,for迴圈是否要繼續執行。
在上面的範例裡,用來檢查的判別式為「_i <= 9
」,意思是,只要_i
小於等於9,那for迴圈就繼續執行。
這邊給各位兩個口訣:「true就執行」或「false就跳出」,選一個記起來就好。
在上面的範例裡,執行的程式碼是「a ++
」。換句話說,每執行一次for迴圈,a就會執行+1的動作。
在上面的範例裡,我們是用「_i ++
」的程式碼,這表示每次執行完,for迴圈內的程式碼之後,_i就會執行+1的動作。
如果要用遞減,那就是使用「--」的符號。
以這段範例來說,_i
會從0跑到9,換句話說,這個for迴圈總共會執行10次。
從上面的範例中,我們已經理解了,for迴圈的基本結構,這邊要再講解一些,使用for迴圈時,所需要知道的事項。
首先是變數範圍(Variable Scope),在上面的範例中,我們是使用局部變數,來定義_i
,這是一個常見的作法。
也就是說,當這個for迴圈結束之後,_i
就會被刪除,不會留在記憶體當中,畢竟,這個變數只是用來充當「計時器」,沒有必要繼續留著。
再來,這個_i
變數,其實也可以應用在for迴圈裡面,例如以下的程式碼:
//利用for迴圈,讓a等於1加到10
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
a = a + _i ;
}
第一次執行,a會等於1(0+1),第二次執行,a會等於3(1+2),第三次執行,a會等於6(3+3),以此類推下去,最後a就會變成1到10的總和。
因為變數遞增的性質,for迴圈十分適合用在,用來改變陣列(Array)裡的數值。
關於這方面的應用,將會在陣列的教學中講解:
在switch的教學中,有講到break的語法,而在迴圈當中(任何類型的迴圈),也能使用break語法。
在迴圈當中,如果遇到break,表示終止「目前運行的整個迴圈」,例如以下的程式碼:
//當_i等於6時,迴圈中斷,因此a只會從1加到5
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
if (_i == 6) {
break ;
}
a = a + _i ;
}
上述之所以會說「目前運行的」,是因為迴圈也能「套娃式」的使用,如果是在內層的迴圈裡使用break,那跳出去之後,外層的迴圈依然會繼續執行。
上一個break,是終止整個迴圈,那能不能,只跳過「某一段的迴圈」就好?答案是使用
「continue」的語法。
以下是continue的範例:
//只跳過+5的迴圈,其他迴圈都正常執行
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
if (_i == 5) {
continue ;
}
a = a + _i ;
}
這邊要注意一點,不管是break,或是continue,他們的「位置」很重要,因為在這些語法上方的程式碼,依然會執行,只有下方的內容,會被斷掉,例如:
//如果把break,擺到這個位置,那a就會變成1加到6
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
a = a + _i ;
if (_i == 6) {
break ;
}
}
//完全沒有意義,因為加完才跳過,所以a最後還是變成1加到10
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
a = a + _i ;
if (_i == 5) {
continue ;
}
}
🔔如果內容對你有幫助,可以按個喜歡,這樣就能讓更多人,接觸到這些棒棒的內容🔔
✨祝各位也能開心的做出好遊戲✨