1、TypeScript 循環(huán)
有的時候,我們可能需要多次執(zhí)行同一塊代碼。一般情況下,語句是按順序執(zhí)行的:函數(shù)中的第一個語句先執(zhí)行,接著是第二個語句,依此類推。
編程語言提供了更為復雜執(zhí)行路徑的多種控制結構。
循環(huán)語句允許我們多次執(zhí)行一個語句或語句組,下面是大多數(shù)編程語言中循環(huán)語句的流程圖:
2、for 循環(huán)
TypeScript for 循環(huán)用于多次執(zhí)行一個語句序列,簡化管理循環(huán)變量的代碼。
語法
語法格式如下所示:
for ( init; condition; increment ){
statement(s);
}
下面是 for 循環(huán)的控制流程解析:
- init 會首先被執(zhí)行,且只會執(zhí)行一次。這一步允許您聲明并初始化任何循環(huán)控制變量。您也可以不在這里寫任何語句,只要有一個分號出現(xiàn)即可。
- 接下來,會判斷 condition 。如果為 true,則執(zhí)行循環(huán)主體。如果為 false,則不執(zhí)行循環(huán)主體,且控制流會跳轉到緊接著 for 循環(huán)的下一條語句。
- 在執(zhí)行完 for 循環(huán)主體后,控制流會跳回上面的 increment 語句。該語句允許您更新循環(huán)控制變量。該語句可以留空,只要在條件后有一個分號出現(xiàn)即可。
- 條件再次被判斷。如果為 true,則執(zhí)行循環(huán),這個過程會不斷重復(循環(huán)主體,然后增加步值,再然后重新判斷條件)。在條件變?yōu)?false 時,for 循環(huán)終止。
在這里,statement(s) 可以是一個單獨的語句,也可以是幾個語句組成的代碼塊。
condition 可以是任意的表達式,當條件為 true 時執(zhí)行循環(huán),當條件為 false 時,退出循環(huán)。
流程圖
鴻蒙NEXT學習文檔+mau123789是v
實例
以下實例計算 5 的階乘, for 循環(huán)生成從 5 到 1 的數(shù)字,并計算每次循環(huán)數(shù)字的乘積。
3、TypeScript
var num:number = 5; var i:number; var factorial = 1; for(i = num;i>=1;i--) { factorial *= i; } console.log(factorial)
編譯以上代碼得到如下 JavaScript 代碼:
4、JavaScript
鴻蒙NEXT學習文檔+mau123789是v
var num = 5;
var i;
var factorial = 1;
for (i = num; i >= 1; i--)
{
factorial *= i;
}
console.log(factorial);復制
執(zhí)行以上 JavaScript 代碼,輸出結果為:
120
5、for...in 循環(huán)
for...in 語句用于一組值的集合或列表進行迭代輸出。
語法
語法格式如下所示:
for (var val in list) {
//語句
}
val 需要為 string 或 any 類型。
實例
6、TypeScript
var j:any;
var n:any = "a b c"
for(j in n) {
console.log(n[j])
}復制
編譯以上代碼得到如下 JavaScript 代碼:
7、JavaScript
var j;
var n = "a b c";
for (j in n) {
console.log(n[j]);
}復制
執(zhí)行以上 JavaScript 代碼,輸出結果為:
a
b
c
8、for…of 、forEach、every 和 some 循環(huán)
此外,TypeScript 還支持 for…of 、forEach、every 和 some 循環(huán)。
for...of 語句創(chuàng)建一個循環(huán)來迭代可迭代的對象。在 ES6 中引入的 for...of 循環(huán),以替代 for...in 和 forEach() ,并支持新的迭代協(xié)議。for...of 允許你遍歷 Arrays(數(shù)組), Strings(字符串), Maps(映射), Sets(集合)等可迭代的數(shù)據(jù)結構等。
9、TypeScript for...of 循環(huán)
let someArray = [1, "string", false];
for (let entry of someArray) {
console.log(entry); // 1, "string", false
}復制
forEach、every 和 some 是 JavaScript 的循環(huán)語法,TypeScript 作為 JavaScript 的語法超集,當然默認也是支持的。
因為 forEach 在 iteration 中是無法返回的,所以可以使用 every 和 some 來取代 forEach。
10、TypeScript forEach 循環(huán)
let list = [4, 5, 6];
list.forEach((val, idx, array) = > {
// val: 當前值
// idx:當前index
// array: Array
});復制
11、TypeScript every 循環(huán)
let list = [4, 5, 6];
list.every((val, idx, array) = > {
// val: 當前值
// idx:當前index
// array: Array
return true; // Continues
// Return false will quit the iteration
});復制
12、while 循環(huán)
while 語句在給定條件為 true 時,重復執(zhí)行語句或語句組。循環(huán)主體執(zhí)行之前會先測試條件。
語法
語法格式如下所示:
while(condition)
{
statement(s);
}
在這里,statement(s) 可以是一個單獨的語句,也可以是幾個語句組成的代碼塊。
condition 可以是任意的表達式,當條件為 true 時執(zhí)行循環(huán)。 當條件為 false 時,程序流將退出循環(huán)。
流程圖
圖表中,while 循環(huán)的關鍵點是循環(huán)可能一次都不會執(zhí)行。當條件為 false 時,會跳過循環(huán)主體,直接執(zhí)行緊接著 while 循環(huán)的下一條語句。
實例
13、TypeScript
var num:number = 5;
var factorial:number = 1;
while(num >=1) {
factorial = factorial * num;
num--;
}
console.log("5 的階乘為:"+factorial);復制
編譯以上代碼得到如下 JavaScript 代碼:
14、JavaScript
var num = 5;
var factorial = 1;
while (num >= 1) {
factorial = factorial * num;
num--;
}
console.log("5 的階乘為:" + factorial);復制
執(zhí)行以上 JavaScript 代碼,輸出結果為:
5 的階乘為:120
15、do...while 循環(huán)
不像 for 和 while 循環(huán),它們是在循環(huán)頭部測試循環(huán)條件。do...while 循環(huán)是在循環(huán)的尾部檢查它的條件。
語法
語法格式如下所示:
do
{
statement(s);
}while( condition );
請注意,條件表達式出現(xiàn)在循環(huán)的尾部,所以循環(huán)中的 statement(s) 會在條件被測試之前至少執(zhí)行一次。
如果條件為 true,控制流會跳轉回上面的 do,然后重新執(zhí)行循環(huán)中的 statement(s)。這個過程會不斷重復,直到給定條件變?yōu)?false 為止。
流程圖
實例
TypeScript
var n:number = 10;
do {
console.log(n);
n--;
} while(n >=0);復制
編譯以上代碼得到如下 JavaScript 代碼:
JavaScript
var num = 5;
var n = 10;
do {
console.log(n);
n--;
} while (n >= 0);復制
執(zhí)行以上 JavaScript 代碼,輸出結果為:
10
9
8
7
6
5
4
3
2
1
0
16、break 語句
break 語句有以下兩種用法:
- 當 break 語句出現(xiàn)在一個循環(huán)內時,循環(huán)會立即終止,且程序流將繼續(xù)執(zhí)行緊接著循環(huán)的下一條語句。
- 它可用于終止 switch 語句中的一個 case。
如果您使用的是嵌套循環(huán)(即一個循環(huán)內嵌套另一個循環(huán)),break 語句會停止執(zhí)行最內層的循環(huán),然后開始執(zhí)行該塊之后的下一行代碼。
語法
語法格式如下所示:
break;
流程圖
實例
TypeScript
var i:number = 1
while(i<=10) {
if (i % 5 == 0) {
console.log ("在 1~10 之間第一個被 5 整除的數(shù)為 : "+i)
break // 找到一個后退出循環(huán)
}
i++
} // 輸出 5 然后程序執(zhí)行結束復制
編譯以上代碼得到如下 JavaScript 代碼:
JavaScript
var i = 1;
while (i <= 10) {
if (i % 5 == 0) {
console.log("在 1~10 之間第一個被 5 整除的數(shù)為 : " + i);
break; // 找到一個后退出循環(huán)
}
i++;
} // 輸出 5 然后程序執(zhí)行結束復制
執(zhí)行以上 JavaScript 代碼,輸出結果為:
在 1~10 之間第一個被 5 整除的數(shù)為 : 5
17、continue 語句
continue 語句有點像 break 語句。但它不是強制終止,continue 會跳過當前循環(huán)中的代碼,強迫開始下一次循環(huán)。
對于 for 循環(huán),continue 語句執(zhí)行后自增語句仍然會執(zhí)行。對于 while 和 do...while 循環(huán),continue 語句重新執(zhí)行條件判斷語句。
語法
語法格式如下所示:
continue;
流程圖
實例
TypeScript
ar num:number = 0
var count:number = 0;
for(num=0;num<=20;num++) {
if (num % 2==0) {
continue
}
count++
}
console.log ("0 ~20 之間的奇數(shù)個數(shù)為: "+count) //輸出10個偶數(shù)復制
編譯以上代碼得到如下 JavaScript 代碼:
JavaScript
var num = 0;
var count = 0;
for (num = 0; num <= 20; num++) {
if (num % 2 == 0) {
continue;
}
count++;
}
console.log("0 ~20 之間的奇數(shù)個數(shù)為: " + count); //輸出 10復制
執(zhí)行以上 JavaScript 代碼,輸出結果為:
0 ~20 之間的奇數(shù)個數(shù)為: 10
18、無限循環(huán)
無限循環(huán)就是一直在運行不會停止的循環(huán)。 for 和 while 循環(huán)都可以創(chuàng)建無限循環(huán)。
for 創(chuàng)建無限循環(huán)語法格式:
for(;;) {
// 語句
}
實例
for(;;) {
console.log("這段代碼會不停的執(zhí)行")
}
while 創(chuàng)建無限循環(huán)語法格式:
while(true) {
// 語句
}
實例
while(true) {
console.log("這段代碼會不停的執(zhí)行")
}
審核編輯 黃宇
-
HarmonyOS
+關注
關注
79文章
1973瀏覽量
30143 -
OpenHarmony
+關注
關注
25文章
3713瀏覽量
16254 -
鴻蒙OS
+關注
關注
0文章
188瀏覽量
4382
發(fā)布評論請先 登錄
相關推薦
評論