JavaScript的控制結構和C與Java裡的類似。條件語句支持if...else
和switch
。循環支持while
、do...while
和for
。
1.4.1 條件語句
首先我們看一下如何構造if...else
條件語句。有幾種方式。
如果想讓一個腳本僅當條件是true
時執行,可以這樣寫:
var num = 1;
if (num === 1) {
console.log("num is equal to 1");
}
如果想在條件為true
的時候執行腳本A,其他情況下都執行腳本B,可以這樣寫:
var num = 0;
if (num === 1) {
console.log("num is equal to 1");
} else {
console.log("num is not equal to 1, the value of num is " +num);
}
if...else
語句也可以用三元操作符替換,例如下面的if...else
語句:
if (num === 1){
num--;
} else {
num++;
}
可以用三元操作符替換為:
(num === 1) ? num-- : num++;
如果我們有多個腳本,可以多次使用if...else
,根據不同的條件執行不同的語句:
var month = 5;
if (month === 1) {
console.log("January");
} else if (month === 2){
console.log("February");
} else if (month === 3){
console.log("March");
} else {
console.log("Month is not January, February or March");
}
最後,還有switch
語句。如果要判斷的條件和上面的一樣(但要和不同的值進行比較),可以使用swtich
語句:
var month = 5;
switch(month) {
case 1:
console.log("January");
break;
case 2:
console.log("February");
break;
case 3:
console.log("March");
break;
default:
console.log("Month is not January, February or March");
}
對於switch
語句來說,case
和break
關鍵字的用法很重要。case
判斷當前switch
的值是否和case
分支語句的值相等。break
會中止switch
語句的執行。沒有break
會導致執行完當前的case
後,繼續執行下一個case
,直到遇到break
或switch
執行結束。最後,還有default
關鍵字,在表達式不匹配前面任何一種情形的時候,就執行default
中的代碼(如果有對應的,就不會執行)。
1.4.2 循環
在處理數組元素時會經常用到循環(數組是下一章的主講內容)。在我們的算法中也會經常用到for
循環。
JavaScript中的for
循環與C和Java中的一樣。循環的計數值通常是一個數字,然後和另一個值比較(如果條件成立就會執行for
循環中的代碼),之後這個數值會遞增或遞減。
在下面的代碼裡,我們用了一個
for
循環。當i
小於10時,會在控制台中輸出其值。i
的初始值是0,因此這段代碼會輸出0到9。for (var i=0; i<10; i++) { console.log(i); }
我們要關注的下一種循環是
while
循環。當while
的條件判斷成立時,會執行循環內的代碼。下面的代碼裡,有一個初始值為0的變量i
,我們希望在i
小於10時輸出它的值。輸出會是0到9:var i = 0; while(i<10) { console.log(i); i++; }
do...while
循環和while
循環很相似。區別是在while
循環裡,先進行條件判斷再執行循環體中的代碼,而在do...while
循環裡,是先執行循環體中的代碼再判斷循環條件。do...while
循環至少會讓循環體中的代碼執行一次。下面的代碼同樣會輸出0到9:var i = 0; do { console.log(i); i++; } while (i<10)