條件語句的作用是,當用戶滿足某個特定的條件時,才會執行相應的語句。
if 結構
if
結構是先判斷一個表達式的布爾值,然后根據布爾值的結果,執行不同的語句。
if (condition){
//true statement
}else {
//false statement
}
condition
可以是任意表達式,JavaScript解釋器會自動調用Boolean()
將表達式的結果轉換為布爾值。如果結果為true
,則執行第一個代碼塊內的語句;如果為`false``,則執行第二個代碼塊內的語句。
if語句可以單獨使用,也可以和多個else
連續使用。
if (a = 1){
// statement
}
if (a == 1){
}else if (a == 2){
}else if (a == 3){
}
label 標簽
label是很多熟練的jser都會忽略的知識。語句的前面有標簽(label),相當于定位符,用于跳轉到程序的任意位置。
label語法:
labelname: statement;
標簽可以是任意的標識符,但是不能使保留字,語句部分可以是任意語句。
switch 結構
switch 語句和if 語句的關系密切,當多個if...else
連在一起使用的時候,可以轉為更方便的switch
結構。
switch(expresstion){
case value1:
statement;
break;
case value2:
statement;
break;
default:
statement;
}
switch
語句會根據輸入的變量expresstion
的值,選擇執行相應的case
。如果所有的case
都不符合,則執行最后的default
部分。
需要注意的是,每個case
代碼內部的break
語句不能少,否則會接下去執行下一個case
代碼塊,而不是跳出switch
結構。
雖然JavaScript的switch語句是參考C語言的寫法,但是也有特殊性:
- switch和case可以使用任意表達式,不一定是常量。
- switch語句進行比較的時候是嚴格相等(===)運算,不是相等(==)運算。所以并不會發生類型的轉換。
while和do-while
while語句屬于前測試循環語句,也就是在循環體內的代碼被執行之前,先對條件進行檢測,不符合的話就不會執行后面的代碼。
while(expression) {
statement;
}
看個例子
var i = 0;
while(i < 10) {
console.log(i);
i++;
}
結果會輸出從0-9十個數字。
所以,我們在使用while
循環語句時,一定要給它設定一個具體的范圍。否則就會一直執行下去,你會發現網頁會被卡死,什么也做不了。
do-while是后測試循環語句,在出口條件判斷之前就會執行一次代碼
do {
statement;
}while(expression);
不管條件是否為真,do...while
循環至少運行一次。另外,while
語句后面的分號不能省略。
for 循環語句
for語句也是前測試循環語句,但具備在執行循環代碼以前初始化變量和定義循環后要執行代碼的能力。它可以指定循環的起點、終點和終止條件。
for(var i = 1, i < 3, i++) {
console.log(i);
}
for
語句后面的括號里有三個表達式:
- 初始化表達式:確定循環的初始值,只在循環開始時執行一次。
- 測試表達式:檢查循環條件,只要為真(true)就進行后續的操作。
- 遞增表達式:完成后續操作,然后返回上一步,再一次檢查循環條件。
如果省略的for
語句表達式的三個部分,或者沒有設置循環的終點,就會導致一個無限循環。
break 和 continue
break
和continue
都具有跳轉作用,可以讓代碼不按既有的順序執行。
-
break
用于強制退出循環體,執行循環后面的語句 -
continue
用于退出本次循環,執行下次循環
for(var i = 1; i< 10; i++){
if(i % 4 === 0){
break;
}
console.log(i);
}
for(var i = 1; i< 10; i++){
if(i % 4 === 0){
continue;
}
console.log(i);
}
如果存在多重循環,不帶參數的break
和continue
都只針對最內層循環。