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