一、條件語句
條件語句基于不同的條件來執行不同的動作
1.if語句:只有當指定條件為true時,使用該語句來執行代碼
2.if...else語句:當條件為true時執行代碼,當條件為else時執行其他代碼
3.if...else if...else語句:使用該語句來選擇多個代碼塊之一來執行
4.switch語句:使用該語句來選擇多個代碼塊之一來執行
1.if語句
由一個布爾表達式后跟一個或多個語句組成
語法:
if(boolean_expression){# 在布爾表達式 boolean_expression 為 true 執行
}
如果布爾表達式為true,則if內的語句塊會被執行,否則if語句后的第一組代碼將被執行
2.if...else語句
一個if語句后面一個可選的else語句,else在布爾表達式為false時被執行
語法
if(boolean_expression){# 在布爾表達式 boolean_expression 為 true 執行
}else{# 在布爾表達式 boolean_expression 為 false 執行
}
3.if...else if...else語句
在執行多個判斷條件時有用
語法
if(boolean_expression 1) {# 在布爾表達式 boolean_expression 1 為 true 執行
} else if( boolean_expression 2) {# 在布爾表達式 boolean_expression 2 為 true 執行
} else if( boolean_expression 3) {# 在布爾表達式 boolean_expression 3 為 true 執行
} else {# 布爾表達式的條件都為 false 時執行
}
注:
1.一個if判斷語句可以有0或1個else語句,必須在if...else后面
2.一個if判斷語句可以有0個或者多個else...if,必須在else之前
3.一旦執行了else...if里的代碼,后面的else...if或else將不再執行
4.switch...case語句
允許測試一個變量等于多個值時的情況,每個值為一個case,且被測試的變量會對每個switch case進行檢查
語法:
switch(expression){case constant-expression :statement(s);break; /* 可選的 */case constant-expression :statement(s);break; /* 可選的 *//* 您可以有任意數量的 case 語句 */default : /* 可選的 */statement(s);
}
規則:
1.switch?語句中的?expression?是一個要被比較的表達式,可以是任何類型,包括基本數據類型(如 number、string、boolean)、對象類型(如 object、Array、Map)以及自定義類型(如 class、interface、enum)等。
2.在一個 switch 中可以有任意數量的 case 語句。每個 case 后跟一個要比較的值和一個冒號。
3.case 的?constant-expression?必須與 switch 中的變量 expression 具有相同或兼容的數據類型。
4.當被測試的變量等于 case 中的常量時,case 后跟的語句將被執行,直到遇到?break?語句為止。
5.當遇到?break?語句時,switch 終止,控制流將跳轉到 switch 語句后的下一行。
6.不是每一個 case 都需要包含?break。如果 case 語句不包含?break,控制流將會?繼續?后續的 case,直到遇到 break 為止。
7.一個?switch?語句可以有一個可選的?default?case,出現在 switch 的結尾。default 關鍵字則表示當表達式的值與所有 case 值都不匹配時執行的代碼塊。default case 中的?break?語句不是必需的。
二、循環
1.for循環
用于多次執行一個語句序列,減緩管理循環變量的代碼
語法:
for ( init; condition; increment ){statement(s);
}
流程解析:
1.init會先被執行,且只會執行一次,這一步允許聲明并初始化任何循環控制變量,也可以在這里不屑任何語句,一個;即可
2.然后會判斷condition,如果為true,則執行循環主體,如果為false,則不執行主體,且控制流會跳轉到緊接著for循環的下一條語句
3.在執行完for循環主體后,控制流會跳回上面的increment語句,允許更新循環控制變量,可以留空
4.條件再次被判斷,如果為true,則執行循環,過程不斷重復,在條件為false時,結束循環
2.for...in循環
用于一組值的集合或列表進行迭代輸出
語法:
for (var val in list) { //語句
}
val需要為string或any類型
3.for...of,forEach,every和some循環
1.for...of語句創建一個循環來迭代可迭代的對象,在ES6中引入的for..of循環,以替代for...in和forEach(),并支持新的迭代協議,for...of允許遍歷Arrays(數組),Strings(字符串),Maps(映射),Sets(集合)等可迭代的數據結構等
let someArray = [1, "string", false];for (let entry of someArray) {console.log(entry); // 1, "string", false
}
2.forEach,every和some是javaScript的循環語法,TypeScript為JavaScript的超集,所以支持
因為forEach在iteration中是無法返回的,所以可以使用every和some來取代forEach
//forEach循環
let list = [4, 5, 6];
list.forEach((val, idx, array) => {// val: 當前值// idx:當前index// array: Array
});
//every循環
let list = [4, 5, 6];
list.every((val, idx, array) => {// val: 當前值// idx:當前index// array: Arrayreturn true; // Continues// Return false will quit the iteration
});
4.while循環
while語句在指定條件為true時,重復執行語句或語句組,循環主體之前會先測試條件
語法:
while(condition)
{statement(s);
}
statement(s)可以是一個單獨的語句,也可以是幾個語句組成的代碼塊
condition可以是任意的表達式,當條件為true時執行循環,當條件為false時,循環退出
5.do...while循環
不像for和while循環,他們是循環頭部測試循環條件,do...while是在尾部測試循環條件
語法:
do
{statement(s);
}while( condition );
因為條件表達式語句在尾部,所以循環中的statement(s)會在條件被測試之前至少執行一次
如果條件為true,控制流會跳轉回上面的do,然后重新執行循環中的statement(s),這個過程會不斷重復,直到條件為false為止
6.break語句
兩種特性:
1.break出現在一個循環體內時,循環會立刻終止,切程序流會緊接著循環下一條語句
2.可用于終止switch語句中的一個case
如果使用的是嵌套循環,break語句會停止執行最內層的循環,然后開始執行模塊之后的下一行代碼
語法:
break;
7.continue語句
continue語句有點像break語句,但是他是跳過當前循環中的代碼,強制執行下一次循環
對于for循環,continue語句執行后自增語句仍會執行,對于while和do...while循環,continue語句會重新執行條件判斷語句
語法:
continue;
8.無限循環
一直在運行不會停止的循環,for和while都可以創建無限循環
for創建無限循環語法格式:
for(;;) { // 語句
}
while創建無限循環語法格式:
while(true) { // 語句
}
三、函數
函數是一組一起執行一個任務的語句