close

按此前往javascript完整教學目錄

 

 

迴圈:

迴圈,可以大量、重複地執行某一段程式碼,並對某些變數進行重複的操作。

常用的迴圈有for迴圈、while迴圈,介紹如下:

(1) for迴圈:

for ( var 變數名稱 = ; 執行條件; 控制程式碼)

{

    內容程式碼

}

兩個小括號( )內可分為三部分:

第一部份是var 變數名稱 = ;。這是迴圈的初始設定,在for迴圈剛開始時就會執行,且只執行一次。

第二部分是執行條件,乃是迴圈執行的條件(此條件,可當作一個布林代數來看待),每一次迴圈內的內容程式碼要被執行前,這個執行條件就會被檢查一次,若條件成立則繼續執行內容程式碼,若不成立則結束迴圈。

第三部分是控制程式碼,用來控制迴圈執行的次數。每一次迴圈內的內容程式碼被執行完後,控制程式碼就會被執行一次。

範例一,求1+2+3+…+100的總和:

var sum=0;

for (var i=1; i<=100; i++)

{ sum = sum+i; }  // sum = sum+i也可以寫成:sum+=i,兩者都是將sum增加i

document.write(sum);

// 執行後顯示:5050

範例二,求2~100之間的所有質數:

for (var i=2; i<=100; i++)

{

    var i_have_factor = false;      

    for (var j=2; j<i; j++)

    {

        if (i%j==0)

        {i_have_factor =true; } // i_have_factortrue,表示i「除了i自己與1以外的因數」

    }

    if (!i_have_factor )

    {  document.write(i+", "); }

}

// 執行後顯示:2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,

 

(2) 強制中斷、跳過迴圈的執行:

(2-1) 如上所述,一旦執行條件不成立,for迴圈就不會繼續執行。但在某些情況下,程式設計者需要令for迴圈在執行條件不成立之前,就中斷for迴圈的執行。此時可用break關鍵字來強迫for迴圈中斷。譬如,將之前的範例問題改成:

for (var i=2; i<=100; i++)

{

    var i_have_factor = false;      

    for (var j=2; j<i; j++)

    {

        if (i%j==0)

        {i_have_factor =true; break; }   //此處加了break

    }

    if (!i_have_factor )

    {  document.write(i+", "); }

}

因為當i_have_factortrue,表示i「除了i自己與1以外的因數」。加了一個break,表示只要發現一個因數就可以不用繼續執行最內部的迴圈,避免浪費時間。且仍能找出2~100之間的所有質數。

(2-2) 在某些情況下,程式設計者需要令for迴圈跳過某次執行,然後去執行下一次。此時可用關鍵字continue來跳過。比如,將上述的範例改成:

for (var i=2; i<=100; i++)

{

if (i>2 && i%2==0){continue;}   //此處加了continue

    var i_have_factor = false;      

    for (var j=2; j<i; j++)

    {

        if (i%j==0)

        {i_have_factor =true; break; }

    }

    if (!i_have_factor )

    {  document.write(i+", "); }

}

因為已知一個數若大於2且又是偶數,則其必不可能為質數。加了一個continue,表示只要i大於2i又是偶數,就可以判斷i不是質數,直接跳過這一輪的執行,再將i增加1,避免浪費時間。且仍能找出2~100之間的所有質數。

(3) while 迴圈:

while 迴圈跟for 迴圈在執行的邏輯上很類似,只是寫法比較簡單。while 迴圈寫法為:

while (執行條件)

{

    內容程式碼

}

for迴圈一樣,while每執行一次內容程式碼之前,都會檢查執行條件是否成立(該布林代數是否為true,成立就執行,不成立就結束迴圈。以範例來說,上述(1)中的範例一:求1+2+3+…+100的總和,用while迴圈來寫是這樣的:

var sum=0;

var i=1;

while(i<=100)

{

  sum=sum+i;

  i++;

}

document.write(sum);

// 執行後顯示:5050

其中原本for迴圈內的初始設定var i=1;被移到迴圈之外,而原本的控制程式碼i++被寫到內容程式碼裡了。而執行後的顯示的結果是一樣的。

註:while迴圈也可以使用breakcontinue來中斷、跳過迴圈的執行。

 

 

上一篇:javascript 比較運算子與if判斷式

下一篇:javascript 常用內建函數

arrow
arrow
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

    埃伯 發表在 痞客邦 留言(0) 人氣()