typescript控制语句

TypeScript 条件语句、循环语句与函数学习心得

一、条件语句

条件语句是控制程序执行路径的核心工具,它让程序根据不同的条件执行不同的代码。TypeScript 中常用的条件语句包括 ifif...elseif...else if...elseswitch

1. if 语句

if 语句用于在条件为 true 时执行一段代码。例如:

var num: number = 5;
if (num > 0) { console.log("数字是正数");
}

心得: if 语句简单且直观,适合单一条件判断。如果有多个条件,可以搭配 else if 使用,但一旦条件复杂,switch 语句会更具可读性。

2. if...else 语句

if...else 语句用于在条件为 truefalse 时执行不同的代码块。

var num: number = 12;
if (num % 2 == 0) {console.log("偶数");
} else {console.log("奇数");
}

心得: if...else 使代码逻辑更加完整,确保每种条件都有对应的执行路径。

3. if...else if...else 语句

当需要判断多个条件时,可以使用 if...else if...else 语句。例如:

var num: number = 2;
if (num > 0) {console.log(num + " 是正数");
} else if (num < 0) {console.log(num + " 是负数");
} else {console.log(num + " 不是正数也不是负数");
}

心得: 这种多条件判断结构在多个场景下很有用,但如果条件过多,代码的复杂性会提升,因此适当时可以考虑用 switch 来优化代码。

4. switch 语句

switch 语句是用于替代多层 if...else if...else 的一种方式,更加清晰易读。

var grade: string = "A";
switch (grade) {case "A":console.log("优");break;case "B":console.log("良");break;case "C":console.log("及格");break;case "D":console.log("不及格");break;default:console.log("非法输入");break;
}

心得: switch 对于处理多个离散值时效果更好,避免了大量的 else if 语句,让代码更加简洁。

二、循环语句

循环语句用于重复执行代码块,在某些情况下,可以大幅减少代码的重复。TypeScript 中常见的循环有 forwhiledo...while,此外 TypeScript 还支持 for...offorEacheverysome 循环。循环中还可以使用 break 和 continue 控制循环的行为。

1. for 循环

适用于已知迭代次数的情况:

for (let i = 0; i < 5; i++) {console.log(i);
}
2. for...of 循环

for...of 用于遍历可迭代对象,如数组、字符串、集合等。

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

心得: for...of 是更现代化的循环方式,特别适用于遍历数组和其他可迭代对象。

3. forEach 循环

forEach 是数组方法,用于遍历数组的每个元素,并对其执行相同的操作。

let list = [4, 5, 6];list.forEach((val, idx, array) => {console.log(`元素: ${val}, 索引: ${idx}, 数组: ${array}`);
});

心得: forEach 使遍历数组更加简洁,但它无法中途退出循环,也没有返回值。

4. every 循环

every 方法用于检查数组中所有元素是否符合指定条件。如果所有元素都满足,返回 true,否则返回 false

let list: number[] = [1, 2, 3, 4, 5];let allPositive = list.every((val) => val > 0);console.log(allPositive); // 输出: true

心得: every 可以用来进行条件检查,只要有一个不符合条件,循环立即停止。

5. some 循环

some 方法用于检查数组中是否至少有一个元素符合条件。如果有,返回 true,否则返回 false

let numbers: number[] = [1, 2, 3, 4, 5];let hasEven = numbers.some((val) => val % 2 === 0);console.log(hasEven); // 输出: true

心得: some 提供了一种快速检查的方式,只要满足一个条件,循环就会结束。

6. break 语句

break 语句用于立即终止循环,不再继续执行后续的迭代。特别适合在找到所需值后跳出循环,减少不必要的计算。

var i: number = 1;while (i <= 10) {if (i % 5 == 0) {console.log("在 1~10 之间第一个被 5 整除的数为 : " + i);break; // 找到一个后退出循环}i++;
}
// 输出 5 然后程序执行结束

心得: break 在循环中很有用,可以在特定条件满足时立即跳出循环,减少不必要的运算。

7. continue 语句

continue 语句跳过当前循环中的剩余代码,直接开始下一次迭代。适合在某些特定情况下跳过不需要的操作。

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

心得: continue 可以有效跳过不需要的循环内容,常用于条件判断中优化代码结构。

8. whiledo...while 循环

while 循环适用于在条件为 true 时重复执行某段代码,而 do...while 则确保代码至少执行一次。

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

心得: whiledo...while 循环适合在循环次数不确定但需要满足特定条件时使用。对于 for 循环,continue 语句执行后自增语句仍然会执行。对于 while 和 do…while 循环,continue 语句�重新执行条件判断语句。

三、函数

函数是执行特定任务的代码块,可以复用代码逻辑。TypeScript 提供了多种类型的函数定义方式,并且具有强大的类型支持。

  1. 基本函数
    通过 function 关键字定义函数:

typescript
Copy code
function greet(): string {
return “Hello World”;
}
2. 带参数和返回值的函数
typescript
Copy code
function add(x: number, y: number): number {
return x + y;
}
console.log(add(1, 2)); // 输出: 3
3. 可选参数和默认参数
可选参数用 ? 标记。

typescript
Copy code
function buildName(firstName: string, lastName?: string): string {
return lastName ? ${firstName} ${lastName} : firstName;
}
默认参数可以设置默认值。

typescript
Copy code
function calculate_discount(price: number, rate: number = 0.5) {
return price * rate;
}
4. 剩余参数
用 … 处理不确定数量的参数。

typescript
Copy code
function addNumbers(…nums: number[]): number {
return nums.reduce((sum, current) => sum + current, 0);
}
console.log(addNumbers(1, 2, 3, 4)); // 输出: 10
5. 匿名函数和箭头函数
匿名函数是没有名称的函数。

typescript
Copy code
let msg = function() {
return “Hello World”;
};
箭头函数简化了函数的定义。

typescript
Copy code
let foo = (x: number) => x + 10;
console.log(foo(100)); // 输出: 110
6. 函数重载
TypeScript 支持函数重载,不同的参数类型或数量可以调用同一个函数名。

typescript
Copy code
function disp(s1: string): void;
function disp(n1: number, s1: string): void;
function disp(x: any, y?: any): void {
console.log(x);
console.log(y);
}
心得: TypeScript 的函数提供了丰富的功能,可以通过类型定义确保函数的输入输出都是符合预期的。此外,剩余参数、可选参数和默认参数使得函数更加灵活,能够处理多种调用场景。尤其是在复杂项目中,函数的类型系统帮助避免了许多运行时错误。

四、总结

  • 条件语句 在程序逻辑中必不可少,它们决定了不同情况下程序的执行路径。if 适合简单判断,switch 更加适合多个离散条件的判断。
  • 循环语句 提供了强大的代码复用能力,特别是对于重复操作或者遍历数据结构时非常实用。for 循环是最常用的,而 while 更适合不确定次数的循环。
  • 函数 是构建程序的基础单元,它使代码更加模块化、易于维护和复用,结合 TypeScript 的类型检查功能,可以有效减少潜在的错误。

通过学习 TypeScript 的条件语句、循环语句和函数,我深刻体会到它在代码健壮性和开发效率方面的优势。相比于 JavaScript,TypeScript 通过静态类型检查帮助我们在开发过程中避免许多潜在的问题,代码的可读性和可维护性也得到了提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/426754.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑神话悟空+云技术,游戏新体验!

近期&#xff0c;一款名为黑神话悟空的游戏因其独特的艺术风格和创新的技术实现在玩家中产生了不小的影响。 而云桌面技术作为一种新兴的解决方案&#xff0c;正在改变人们的游戏体验方式&#xff0c;使得高性能游戏可以在更多设备上流畅运行。 那么&#xff0c;黑神话悟空如…

《深入理解 Java 线程池:高效管理线程的利器》

线程池 1. 什么是线程池&#xff1f; ​ 线程池内部维护了若干个线程&#xff0c;没有任务的时候&#xff0c;这些线程都处于等待空闲状态。如果有新的线程任务&#xff0c;就分配一个空闲线程执行。如果所有线程都处于忙碌状态&#xff0c;线程池会创建一个新线程进行处理或…

滑动窗口(6)_找到字符串中所有字母异位词

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 滑动窗口(6)_找到字符串中所有字母异位词 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f4…

STM32 芯片启动过程

目录 一、前言二、STM32 的启动模式三、STM32 启动文件分析1、栈 Stack2、堆 Heap3、中断向量表 Vectors3.1 中断响应流程 4、复位程序 Reset_Handler5、中断服务函数6、用户堆栈初始化 四、STM32 启动流程分析1、初始化 SP、PC 及中断向量表2、设置系统时钟3、初始化堆栈并进入…

【Transformer深入学习】之一:Sinusoidal位置编码的精妙

看苏神的文章提到&#xff1a;Transformer原论文使用Sinusoidal位置编码&#xff0c;作为位置编码的一个显式解&#xff0c;Google 在原论文中对它的描述寥寥无几&#xff0c;只是简单提及了它可以表达相对位置信息&#xff0c;并未提及这个编码的合理性。 看了几篇文章&#x…

云计算实训50——Kubernetes基础命令、常用指令

一、Kubernetes 自动补齐 # 安装自动补齐软件 [rootmaster ~]# yum -y install bash-completion # 临时开启自动补齐功能 [rootmaster ~]# source # 永 久开启自动补齐功能 [rootmaster ~]# echo "source > ~/.bashrc 二、Kubernetes 基础命令 kubectl [command] …

【数据结构】数据结构系列学习笔记——导航篇

一&#xff1a;概述 数据结构是计算机科学中的核心概念之一&#xff0c;是优化算法性能和资源利用率的关键。在软件开发和数据处理中&#xff0c;选择合适的数据结构对于算法的效率至关重要。数据结构的选择通常基于数据的使用模式&#xff0c;包括数据元素之间的关系、数据的存…

【专题】2024中国生物医药出海现状与趋势蓝皮书报告合集PDF分享(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p37719 出海已成为中国医药产业实现提速扩容的重要途径。目前&#xff0c;中国医药产业发展态势良好&#xff0c;创新能力不断增强&#xff0c;然而也面临着医保政策改革和带量集采带来的压力。政府积极出台多项政策支持医药企业出海…

Vim编辑器常用命令

目录 一、命令模式快捷键 二、编辑/输入模式快捷键 三、编辑模式切换到命令模式 四、搜索命令 一、命令模式快捷键 二、编辑/输入模式快捷键 三、编辑模式切换到命令模式 四、搜索命令

我的AI工具箱Tauri版-VideoReapeat视频解说复述克隆

本教程基于自研的AI工具箱Tauri版进行VideoReapeat视频解说复述克隆。 视频解说复述克隆样片 《我的AI工具箱Tauri版-VideoReapeat视频解说复述克隆》样片 进入软件后可以直接搜索 VideoReapeat 或者依次点击 Python音频技术/视频tools 进入该模块。 该模块会消耗TTS文本转语…

【四范式】浅谈NLP发展的四个范式

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是计算机科学&#xff0c;人工智能&#xff0c;语言学关于计算机和人类自然语言之间的相互作用的领域&#xff0c;是计算机科学领域与人工智能领域中的一个重要方向。NLP发展到今天已经进入到了…

kubernetes架构

kubernetes cluster由master和node组成&#xff0c;节点上运行着若干kubernetes服务Master节点&#xff1a; master是kubernetes cluster的大脑&#xff0c;运行着的Daemon服务包括kube-apiserver&#xff0c;kube-scheduler,kube-controller-manager&#xff0c;etcd和Pod网络…

Dify 中的讯飞星火平台工具源码分析

本文主要对 Dify 中的讯飞星火平台工具 spark 进行了源码分析&#xff0c;该工具可根据用户的输入生成图片&#xff0c;由讯飞星火提供图片生成 API。通过本文学习可自行实现将第三方 API 封装为 Dify 中工具的能力。 源码位置&#xff1a;dify-0.6.14\api\core\tools\provide…

出厂非澎湃OS手机解BL锁

脚本作者&#xff1a;酷安mlgmxyysd 脚本项目链接&#xff1a;https://github.com/MlgmXyysd/Xiaomi-HyperOS-BootLoader-Bypass/ 参考 B站作者&#xff1a;蓝空穹 https://www.bilibili.com/read/cv33210124/ 其他参考&#xff1a;云墨清风、水墨青竹、Magisk中文网 决定解BL…

django学习入门系列之第十点《A 案例: 员工管理系统10》

文章目录 12 管理员操作12.4 密码加密12.5 获取对象&#xff08;防止id错误--编辑界面等&#xff09;12.6 编辑管理员12.7 重置密码 往期回顾 12 管理员操作 12.4 密码加密 密码不应该以明文的方式直接存储到数据库&#xff0c;应该加密才放进去 定义一个md5的方法&#xff…

js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】

js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】 描述 概述 在前端开发中&#xff0c;遇到TypeError: Cannot read properties of null (reading indexOf)这类错误并不罕见。这个错误通常表明你试图在一个null值上调用indexOf方法&#xff0c…

飞睿智能UWB BLE Tag蓝牙防丢器模块,APP测距定位一键绑定,安全守护每一刻

我们总在不经意间与生活中的小物件擦肩而过——钥匙遗忘在咖啡厅的角落&#xff0c;钱包遗失在拥挤的地铁&#xff0c;甚至孩子的书包在人群中悄然消失……每一次的失而复得都是幸运的眷顾&#xff0c;但更多的是遗憾与不便。今天&#xff0c;就让我带你走进一个智能守护的新世…

Linux驱动开发 ——架构体系

只读存储器&#xff08;ROM&#xff09; 1.作用 这是一种非易失性存储器&#xff0c;用于永久存储数据和程序。与随机存取存储器&#xff08;RAM&#xff09;不同&#xff0c;ROM中的数据在断电后不会丢失&#xff0c;通常用于存储固件和系统启动程序。它的内容在制造时或通过…

【算法】遗传算法

一、引言 遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是一种模拟生物进化过程的启发式搜索算法&#xff0c;它通过模拟自然选择、遗传、交叉和突变等生物学机制来优化问题的解决方案。遗传算法因其通用性、高效性和鲁棒性&#xff0c;在多个领域中得到了广泛应用&a…

esp32核心跑分程序

https://github.com/ochrin/coremark/tree/esp32 最近一直捣腾esp32s3 (Sense) 做微型摄像。过程中发现一款不错的跑分软件&#xff0c;特此记一笔。 其中针对esp32s3各类参数设定&#xff08;用idf.py menuconfig)&#xff0c;做个记录。 CPU Frequency去240MHz&#xff08…