分支結構
- 單一選擇結構(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迴圈,我們將在講解陣列和物件時使用