鴻蒙開發TypeScript語言:【迴圈】

来源:https://www.cnblogs.com/mau123789/p/18140824
-Advertisement-
Play Games

有的時候,我們可能需要多次執行同一塊代碼。一般情況下,語句是按順序執行的:函數中的第一個語句先執行,接著是第二個語句,依此類推。 編程語言提供了更為複雜執行路徑的多種控制結構。 迴圈語句允許我們多次執行一個語句或語句組,下麵是大多數編程語言中迴圈語句的流程圖: for 迴圈 TypeScript ...


有的時候,我們可能需要多次執行同一塊代碼。一般情況下,語句是按順序執行的:函數中的第一個語句先執行,接著是第二個語句,依此類推。

編程語言提供了更為複雜執行路徑的多種控制結構。

迴圈語句允許我們多次執行一個語句或語句組,下麵是大多數編程語言中迴圈語句的流程圖:

image


for 迴圈

TypeScript for 迴圈用於多次執行一個語句序列,簡化管理迴圈變數的代碼。

語法

語法格式如下所示:

for ( init; condition; increment ){
    statement(s);
}

下麵是 for 迴圈的控制流程解析:

  1. init 會首先被執行,且只會執行一次。這一步允許您聲明並初始化任何迴圈控制變數。您也可以不在這裡寫任何語句,只要有一個分號出現即可。
  2. 接下來,會判斷 condition。如果為 true,則執行迴圈主體。如果為 false,則不執行迴圈主體,且控制流會跳轉到緊接著 for 迴圈的下一條語句。
  3. 在執行完 for 迴圈主體後,控制流會跳回上面的 increment 語句。該語句允許您更新迴圈控制變數。該語句可以留空,只要在條件後有一個分號出現即可。
  4. 條件再次被判斷。如果為 true,則執行迴圈,這個過程會不斷重覆(迴圈主體,然後增加步值,再然後重新判斷條件)。在條件變為 false 時,for 迴圈終止。

在這裡,statement(s) 可以是一個單獨的語句,也可以是幾個語句組成的代碼塊。

condition 可以是任意的表達式,當條件為 true 時執行迴圈,當條件為 false 時,退出迴圈。

流程圖

image

實例

以下實例計算 5 的階乘, for 迴圈生成從 5 到 1 的數字,並計算每次迴圈數字的乘積。

TypeScript

var num:number = 5; 
var i:number; 
var factorial = 1; 
 
for(i = num;i>=1;i--) {
   factorial *= i;
}
console.log(factorial)

編譯以上代碼得到如下 JavaScript 代碼:

JavaScript

var num = 5;
var i;
var factorial = 1;
for (i = num; i >= 1; i--) {
    factorial *= i;
}
console.log(factorial);

執行以上 JavaScript 代碼,輸出結果為:

120

for...in 迴圈

for...in 語句用於一組值的集合或列表進行迭代輸出。

語法

語法格式如下所示:

for (var val in list) { 
    //語句 
}

val 需要為 string 或 any 類型。

實例

TypeScript

var j:any; 
var n:any = "a b c" 
 
for(j in n) {
    console.log(n[j])  
}

編譯以上代碼得到如下 JavaScript 代碼:

JavaScript

var j;
var n = "a b c";
for (j in n) {
    console.log(n[j]);
}

執行以上 JavaScript 代碼,輸出結果為:

a

b

c

for…of 、forEach、every 和 some 迴圈

此外,TypeScript 還支持 for…of 、forEach、every 和 some 迴圈。

for...of 語句創建一個迴圈來迭代可迭代的對象。在 ES6 中引入的 for...of 迴圈,以替代 for...in 和 forEach() ,並支持新的迭代協議。for...of 允許你遍歷 Arrays(數組), Strings(字元串), Maps(映射), Sets(集合)等可迭代的數據結構等。

TypeScript for...of 迴圈

let someArray = [1, "string", false];
 
for (let entry of someArray) {
    console.log(entry); // 1, "string", false
}

forEach、every 和 some 是 JavaScript 的迴圈語法,TypeScript 作為 JavaScript 的語法超集,當然預設也是支持的。

因為 forEach 在 iteration 中是無法返回的,所以可以使用 every 和 some 來取代 forEach。

TypeScript forEach 迴圈

let list = [4, 5, 6];
list.forEach((val, idx, array) => {
    // val: 當前值
    // idx:當前index
    // array: Array
});

TypeScript every 迴圈

let list = [4, 5, 6];
list.every((val, idx, array) => {
    // val: 當前值
    // idx:當前index
    // array: Array
    return true; // Continues
    // Return false will quit the iteration
});

while 迴圈

while 語句在給定條件為 true 時,重覆執行語句或語句組。迴圈主體執行之前會先測試條件。

語法

語法格式如下所示:

while(condition)
{
   statement(s);
}

在這裡,statement(s) 可以是一個單獨的語句,也可以是幾個語句組成的代碼塊。

condition 可以是任意的表達式,當條件為 true 時執行迴圈。 當條件為 false 時,程式流將退出迴圈。

流程圖

image

圖表中,while 迴圈的關鍵點是迴圈可能一次都不會執行。當條件為 false 時,會跳過迴圈主體,直接執行緊接著 while 迴圈的下一條語句。

實例

TypeScript

var num:number = 5; 
var factorial:number = 1; 
 
while(num >=1) { 
    factorial = factorial * num; 
    num--; 
} 
console.log("5 的階乘為:"+factorial);

編譯以上代碼得到如下 JavaScript 代碼:

JavaScript

var num = 5;
var factorial = 1;
while (num >= 1) {
    factorial = factorial * num;
    num--;
}
console.log("5 的階乘為:" + factorial);

執行以上 JavaScript 代碼,輸出結果為:

5 的階乘為:120

do...while 迴圈

不像 for 和 while 迴圈,它們是在迴圈頭部測試迴圈條件。do...while 迴圈是在迴圈的尾部檢查它的條件。

語法

語法格式如下所示:

do
{
   statement(s);
}while( condition );

請註意,條件表達式出現在迴圈的尾部,所以迴圈中的 statement(s) 會在條件被測試之前至少執行一次。

如果條件為 true,控制流會跳轉回上面的 do,然後重新執行迴圈中的 statement(s)。這個過程會不斷重覆,直到給定條件變為 false 為止。

流程圖

image

實例

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);

執行以上 JavaScript 代碼,輸出結果為:

10
9
8
7
6
5
4
3
2
1
0

break 語句

break 語句有以下兩種用法:

  1. 當 break 語句出現在一個迴圈內時,迴圈會立即終止,且程式流將繼續執行緊接著迴圈的下一條語句。
  2. 它可用於終止 switch 語句中的一個 case。

如果您使用的是嵌套迴圈(即一個迴圈內嵌套另一個迴圈),break 語句會停止執行最內層的迴圈,然後開始執行該塊之後的下一行代碼。

語法

語法格式如下所示:

break;

流程圖

image

實例

TypeScript

var i:number = 1 
while(i<=10) { 
    if (i % 5 == 0) {   
        console.log ("在 1~10 之間第一個被 5 整除的數為 : "+i) 
        break     // 找到一個後退出迴圈
    } 
    i++ 
}  // 輸出 5 然後程式執行結束

編譯以上代碼得到如下 JavaScript 代碼:

JavaScript

var i = 1;
while (i <= 10) {
    if (i % 5 == 0) {
        console.log("在 1~10 之間第一個被 5 整除的數為 : " + i);
        break; // 找到一個後退出迴圈
    }
    i++;
} // 輸出 5 然後程式執行結束

執行以上 JavaScript 代碼,輸出結果為:

在 1~10 之間第一個被 5 整除的數為 : 5

continue 語句

continue 語句有點像 break 語句。但它不是強制終止,continue 會跳過當前迴圈中的代碼,強迫開始下一次迴圈。

對於 for 迴圈,continue 語句執行後自增語句仍然會執行。對於 while 和 do...while 迴圈,continue 語句重新執行條件判斷語句。

語法

語法格式如下所示:

continue;

流程圖

image

實例

TypeScript

var num:number = 0
var count:number = 0;
 
for(num=0;num<=20;num++) {
    if (num % 2==0) {
        continue
    }
    count++
}
console.log ("0 ~20 之間的奇數個數為: "+count)    //輸出10個偶數

編譯以上代碼得到如下 JavaScript 代碼:

JavaScript

var num = 0;
var count = 0;
for (num = 0; num <= 20; num++) {
    if (num % 2 == 0) {
        continue;
    }
    count++;
}
console.log("0 ~20 之間的奇數個數為: " + count); //輸出 10

執行以上 JavaScript 代碼,輸出結果為:

0 ~20 之間的奇數個數為: 10

無限迴圈

無限迴圈就是一直在運行不會停止的迴圈。 for 和 while 迴圈都可以創建無限迴圈。

for 創建無限迴圈語法格式:

for(;;) { 
   // 語句
}

實例

for(;;) { 
   console.log("這段代碼會不停的執行") 
}

while 創建無限迴圈語法格式:

while(true) { 
   // 語句
} 

實例

while(true) { 
   console.log("這段代碼會不停的執行") 
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 何為半連接? 半連接是在GreatSQL內部採用的一種執行子查詢的方式,semi join不是語法關鍵字,不能像使用inner join、left join、right join這種語法關鍵字一樣提供給用戶來編寫SQL語句。 兩個表t1表和t2表進行半連接的含義是:對於t1表的某條記錄來說,我們只關 ...
  • 版本說明 由於作者目前接觸當前最新版本為2.3.4 但是官方提供的web版本未1.0.0,不相容2.3.4,因此這裡仍然使用2.3.3版本。 可以自定義相容處理,官方提供了文檔:https://mp.weixin.qq.com/s/Al1VmBoOKu2P02sBOTB6DQ 因為大部分用戶使用Se ...
  • 目錄一、什麼是哨兵模式1、為什麼需要哨兵機制2、哨兵架構拓撲3、Redis Sentinel的功能:二、搭建哨兵架構1、涉及主機2、拓撲結構3、設置一主兩從4、master伺服器狀態5、編輯哨兵的配置文件6、啟動哨兵7、驗證哨兵埠8、查看哨兵日誌9、驗證當前sentinel狀態三、故障轉移1、re ...
  • 近日,由新一代信息技術產業研究院、賽迪未來產業研究中心共同主辦,中國電子學會區塊鏈分會、至頂科技聯合承辦的“2024未來信息技術大會暨首屆數據要素創新發展論壇”於北京成功舉辦。大會公佈了“2023年度數據要素價值創新標桿示範案例”評選結果,天翼雲“海南省數據產品超市公共數據資源開發利用平臺”與“福州... ...
  • 在當今快速發展的世界中,數據被視為新的石油。隨著對數據驅動洞察的日益依賴,大數據工程師的角色比以往任何時候都更為關鍵。 這些專業人員在管理和優化組織內的數據操作中扮演著至關重要的角色。在本文中,我們將探索2024年大數據工程師必須具備的十項技能。 理解大數據工程師的角色 在深入技能之前,瞭解大數據工 ...
  • 內容介紹 hive on spark的調優,那必然涉及到這一系列框架的記憶體模型。本章就是來講一下這些框架的記憶體模型。 hive on spark的任務,從開始到結束。總共涉及了3個框架。分別是:yarn、hive、spark 其中,hive只是一個客戶端的角色。就不涉及任務運行時的記憶體。所以這裡主要 ...
  • 介紹 本示例介紹使用第三方庫的Axios獲取GBK格式的網路數據時,通過util實現GBK轉換UTF-8格式。該場景多用於需要轉換編碼格式的應用。 效果圖預覽 使用說明 直接進入頁面就可獲取GBK格式的用戶名信息併進行解碼操作。 實現思路 使用第三方庫Axios獲取網路數據,並將獲取數據類型設置為A ...
  • 介紹 圖片預覽在應用開發中是一種常見場景,在諸如QQ、微信、微博等應用中均被廣泛使用。本模塊基於Image組件實現了簡單的圖片預覽功能。 使用說明: 雙指捏合縮放圖片大小 雙擊圖片進行圖片的大小切換 圖片在放大模式下,滑動圖片查看圖片的對應位置 效果圖預覽 實現思路 image組件的objectFi ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...