決策結(jié)構(gòu)要求程序員指定由程序進行評估或測試的一個或多個條件,以及在條件被確定為true時要執(zhí)行的一個或多個語句,以及如果條件被確定為false,則可以選擇執(zhí)行其他語句。
下面顯示的是大多數(shù)編程語言中的典型決策結(jié)構(gòu)的一般形式:
決策構(gòu)造在執(zhí)行指令之前評估條件。TypeScript中的決策結(jié)構(gòu)分類如下:
序號 | 聲明和說明 |
---|---|
1 | if語句 一個“if”語句由Boolean表達式后跟一個或多個語句。 |
2 | if... else語句 一個'if'語句后面可以跟一個可選的'else'語句,該語句在Boolean表達式為false時執(zhí)行。 |
3 | else......if和嵌套的if語句 您可以在另一個“if”或“else if”語句中使用一個“if”或“else if”語句。 |
4 | switch語句 一個'switch'語句允許根據(jù)值列表測試變量。 |
if(boolean_expression) { // statement(s) will execute if the boolean expression is true }
如果Boolean表達式的計算結(jié)果為true,那么將執(zhí)行if語句中的代碼塊。如果Boolean表達式的計算結(jié)果為false,那么將執(zhí)行if語句結(jié)束后(在結(jié)束大括號之后)的第一組代碼。
var num:number = 5 if (num > 0) { console.log("number is positive") }
在編譯時,它會生成以下JavaScript代碼:
//Generated by typescript 1.8.10 var num = 5; if (num > 0) { console.log("number is positive"); }
上面的例子將打印“number is positive”,因為if塊指定的條件為true。
number is positive
if(boolean_expression) { // statement(s) will execute if the boolean expression is true } else { // statement(s) will execute if the boolean expression is false }
該if塊保護條件表達式。如果Boolean表達式的計算結(jié)果為true,則執(zhí)行與if語句關(guān)聯(lián)的塊。
該if塊后面可以跟一個可選的else語句。如果表達式的計算結(jié)果為false,則執(zhí)行與else塊關(guān)聯(lián)的指令塊。
var num:number = 12; if (num % 2==0) { console.log("Even"); } else { console.log("Odd"); }
在編譯時,它會生成以下JavaScript代碼:
//Generated by typescript 1.8.10 var num = 12; if (num % 2 == 0) { console.log("Even"); } else { console.log("Odd"); }
上面的示例打印變量中的值是偶數(shù)還是奇數(shù)。if塊通過2來檢查值的可整除性以確定相同的值。以下是上述代碼的輸出:
Even
if (boolean_expression1) { //statements if the expression1 evaluates to true } else if (boolean_expression2) { //statements if the expression2 evaluates to true } else { //statements if both expression1 and expression2 result to false }
當使用if…else…if和else語句時,需要記住以下幾點:
一個if可以有零個或一個else,它必須在任何else..if之后。
一個if可以有零到多個else..if,并且它們必須在else之前。
一旦else..if成功,剩下的else..if或else都不會被測試。
var num:number = 2 if(num > 0) { console.log(num+" is positive") } else if(num < 0) { console.log(num+" is negative") } else { console.log(num+" is neither positive nor negative") }
代碼段顯示的值是否為正,負或零。
在編譯時,它會生成以下JavaScript代碼 -
//Generated by typescript 1.8.10 var num = 2; if (num > 0) { console.log(num + " is positive"); } else if (num < 0) { console.log(num + " is negative"); } else { console.log(num + " is neither positive nor negative"); }
這里是上面的代碼的輸出 -
2 is positive
switch(variable_expression) { case constant_expr1: { //statements; break; } case constant_expr2: { //statements; break; } default: { //statements; break; } }
針對switch中的所有情況測試variable_expression的值。如果變量與其中一種情況匹配,則執(zhí)行相應(yīng)的代碼塊。如果沒有case表達式與variable_expression的值匹配,則將關(guān)聯(lián)默認塊中的代碼。
以下規(guī)則適用于switch語句:
switch中可以有任意數(shù)量的case語句。。
case語句只能包含常量。它不能是變量或表達式。
variable_expression和常量表達式的數(shù)據(jù)類型必須匹配。
除非你在每個代碼塊之后放置一個break,否則執(zhí)行會流入下一個塊。
case表達式必須是唯一的。
默認的塊是可選的。
var grade:string = "A"; switch(grade) { case "A": { console.log("Excellent"); break; } case "B": { console.log("Good"); break; } case "C": { console.log("Fair"); break; } case "D": { console.log("Poor"); break; } default: { console.log("Invalid choice"); break; } }
這個例子根據(jù)常量集(A,B,C,D和E)驗證變量等級的值,并執(zhí)行相應(yīng)的塊。如果變量中的值與上面提到的任何常量都不匹配,則將執(zhí)行默認塊。
在編譯時,它會生成以下JavaScript代碼:
//Generated by typescript 1.8.10 var grade = "A"; switch (grade) { case "A": { console.log("Excellent"); break; } case "B": { console.log("Good"); break; } case "C": { console.log("Fair"); break; } case "D": { console.log("Poor"); break; } default: { console.log("Invalid choice"); break; } }
上面的代碼將產(chǎn)生以下輸出:
Excellent
更多建議: