javascript快速入門3--分支判斷與迴圈

水之原發表於2013-12-01

分支結構

  • 單一選擇結構(if)
  • 二路選擇結構(if/else)
  • 內聯三元運算子 ?:
  • 多路選擇結構(switch)
    var condition = true;
    if (condition) {
        alert("我將出現!");
    }
    condition = false;
    if (condition) {
        alert("我不會出現!");
    } else {
        alert("我會出現!");
    }
    condition ="some string";
    if (condition) {
        alert("可以直接對任何資料型別進行if判斷,在判斷時計算會自動將其轉換成布林值!");
    }
    var val = condition?"當為true時我將被返回":"當為false時我將被返回";
    alert(val);//將輸出"當為true時我將被返回"
    

 

對於if..else語句,如果要執行的語句只有一條,可以不使用“{}”,但這種寫法並不推薦.但確實這樣可以簡化程式碼:

    var str ="one";
    if (str=="one") alert("str的值為字串'one' !");
    else alert("not one");

 

雖然JavaScript中沒有if .... elseif 結構,但可以使用if...else的簡寫方式得到

    //為了判斷使用者輸入的成績的範圍,我們使用了多重巢狀的if .. else語句
    var num = window.prompt("請輸入XXX的成績!","");
    num *=1;//window.prompt方法始終只返回字串,用這樣的方法將其轉換成數字
    if (isNaN(num) && num) {//不能將其它值轉換成數字時將返回NaN,可以用內建的isNaN判斷值是否是NaN
        alert("您輸入的不是一個數字!");
    } else {
        if (num<=100 && num>=90) {
            alert("Excellent!");
        } else {
            if (num =80) {
                alert("Good!");
            } else {
                if (num < 80 && num >= 70) {
                    alert("So so!");
                } else {
                    if (num < 70 && num >=60) {
                        alert("Be careful !!!");
                    } else {
                        if (num < 60 && num >= 0) {
                            alert("Oh, NO!");
                        } else {
                            alert("USB!");
                        }
                    }
                }
            }
        }    
    }
    //上面的程式碼由於用了多重的if..else巢狀,顯得非常的混亂,簡化只須將else後的花括號去掉就行了
    // if (...) {...}這算是一句
    if (isNaN(num)) {
        alert("您輸入的不是一個數字!");
    } else if (num<=100 && num>=90) {
        alert("Excellent!");
    } else if (num =80) {
        alert("Good!");
    } else if (num < 80 && num >= 70) {
        alert("So so!");
    } else if (num < 70 && num >=60) {
        alert("Be careful !!!");
    } else if (num < 60 && num >= 0) {
        alert("Oh, NO!");
    } else {
        alert("USB!");
    }
    //看上去清晰多了,但要注意的是,JavaScript中沒有elseif 這樣的語法,所以上的else if之間是有空格的

 

用於進行多次判斷的switch語句

    switch(condition) { //switch本來就是跳轉的意思(又稱為“開關”),所以switch語句就是判斷情況,跳到符合的情況開始執行
        case 4:
            alert("c的值是4");
        case 3:
            alert("c的值肯定大於等於3");
        case 2:
            alert("c的值肯定大於等於2");
        case 1:
            alert("c的值肯定大於等於1");
    }
    //可以使用 break來只執行符合一個條件的語句
    switch(condition) {
        case 4:
            alert("c的值是4");
            break;
        case 3:
            alert("c的值是3");
            break;
        case 2:
            alert("c的值是2");
            break;
        case 1:
            alert("c的值是1");
            break;
    }
    var condition="one";
    switch(condition) {//switch不但可以用來判斷數字,還可以判斷字串,甚至是不定的變數
        case "one":
            alert("condition的值是字串'one' !");
            break;
        case "three":
            alert("condition的值是字串'three' !");
            break;
        case "four":
            alert("condition的值是字串'four' !");
            break;
        case "five":
            alert("condition的值是字串'five' !");
            break;
        default://當所有情況都不匹配時,將執行default語句後的
            alert("我們要萬無一失!condition什麼都不是!");
    }

 

迴圈

迴圈用來指明當某些條件保持為真時要重複的動作。當條件得到滿足時,就跳出迴圈語句。在 JavScript 中有四種迴圈結構可用。

  • 由計數器控制的迴圈(for)
  • 在迴圈的開頭測試表示式(while)
  • 在迴圈的末尾測試表示式(do/while)
  • 對物件的每個屬性都進行操作(for/in)

for 語句指定了一個計數器變數,一個測試條件,以及更新該計數器的操作。在每次迴圈的重複之前,都將測試該條件。如果測試成功,將執行迴圈中的程式碼。如果測試不成功,不執行迴圈中的程式碼,程式繼續執行緊跟在迴圈後的第一行程式碼。在執行該迴圈後,計算機變數將在下一次迴圈之前被更新。

    for (var i=0;i<10;i++) {//for迴圈的圓括號裡面須放三個句子,分別是1.初使化計數器 2.判斷條件 3.更新計數器
        alert("i當前的值為"+i);
    }

 

其實for迴圈語句完全可以這樣寫,下面的程式碼和上面的效果是一樣的(雖然沒有必要,但從這樣的程式碼可清楚看出for迴圈如何工作的)

    var i=0;//迴圈進行之前初始化i
    for(;;) {//for語句括號中必須有三個語句,但可以為空語句
        if (i<10) {//當條件為true時才執行程式碼
            alert("i當前的值為"+i);
        } else {//當條件為false時就退出迴圈
            break;//使用break退出迴圈
        }
    }

 

一個死迴圈最能說明while的工作方式了(但這樣的錯誤我們絕不能在實際程式設計中出現)

    while (true) {
        alert("你關不掉我的!");//這就是網上那些所謂的高手寫的“關不上的窗(周傳雄新歌,力薦)”程式碼
    }

 

do..while迴圈與while迴圈不同之處在於它至少將程式碼塊中的程式碼執行一次

    do {
        alert("我肯定會出現一次的");
    } while (false);

 

而對於for ... in迴圈,我們將在講解陣列和物件時使用

相關文章