typescript控制语句

news2024/9/19 10:57:38

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.coloradmin.cn/o/2146127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

24年蓝桥杯及攻防世界赛题-MISC-3

21 reverseMe 复制图片&#xff0c;在线ocr识别&#xff0c;https://ocr.wdku.net/&#xff0c;都不费眼睛。 22 misc_pic_again ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc/zsteg] └─$ zsteg misc_pic_again.png imagedata … text: “$$KaTeX parse error: Undefined…

方法:批量提取PPT幻灯片中图片

处理包含大量图片的PPT&#xff08;PowerPoint&#xff09;幻灯片已成为许多专业人士的日常任务之一。然而&#xff0c;手动从每张幻灯片中逐一提取图片不仅耗时耗力&#xff0c;还容易出错。为了提升工作效率&#xff0c;减少重复劳动&#xff0c;探索并实现一种高效批量提取P…

STM32F407单片机开发入门(二)STM32F407VET6单片机详解

文章目录 一.概要二.单片机型号命名规则三.STM32F407系统架构四.STM32F40VET6单片机启动流程五.STM32F40VET6单片机主要外设资源六.开发过程中查看芯片数据手册的必要性1.单片机外设资源情况2.STM32F407单片机内部框图3.STM32F407单片机管脚图4.STM32F407单片机每个管脚功能5.单…

球类目标检测系统源码分享

球类目标检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

IOS 26 实现歌单详情(UITableView)列表 ③

歌单详情完整效果 歌单列表分组头部效果 本节是在文章 IOS 25 实现歌单详情&#xff08;UITableView&#xff09;列表② 的基础上&#xff0c;实现歌单列表分组头部View。当歌单列表滑动头部View至顶部时&#xff0c;头部View不会因列表滑动而消失&#xff0c;会一直显示在顶部…

2024.9.18

1.已知网址www.hqyj.com截取出网址的每一个部分 菜单栏中 ----> 虚拟机 -----> 设置 -----> 网络适配器 选择桥接模式 菜单栏中 ----> 编辑 -----> 虚拟网络编辑器 更改设置 将桥接改成自动 如果桥接连不上网 尝试还原默认设置后&#xff0c;在重新连接桥接…

微信小程序的学生选课系统--论文源码调试讲解

第二章 开发技术介绍 此次管理系统的关键技术和架构由B/S结构、java和mysql数据库&#xff0c;是本系统的关键开发技术&#xff0c;对系统的整体、数据库、功能模块、系统页面以及系统程序等设计进行了详细的研究与规划。 2.1 系统开发平台 在该在线微信小程序的学生选课系统…

动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct

动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG&#xff1a;rerank模型微调实践 bge-reranker-v2-m3动手学习RAG&#xff1a;迟交互模型colbert微调实践 bge-m3动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct动手学…

JavaScript高级——内存溢出和内存泄漏

1、闭包的缺点与解决方法 &#xff08;1&#xff09;缺点&#xff1a;函数执行完后&#xff0c;函数内的局部变量没有释放&#xff0c;占用内存时间会变长。 容易造成内存泄漏。 &#xff08;2&#xff09;解决&#xff1a;能不用闭包就不用。 及时释放。 2、内存溢出 ① 一…

Linux进阶 查看系统进程

操作系统中进程的生命周期是: 创建进程,(服务启动或软件的启动)进行运行状态进程等待状态进行唤醒进程结束一般主要关注是进行中间的三种状态,三种状态之间装换关系如下: 1、就绪状态:表示进程已经做好了运行的准备状态,只要获得内存空间,就可以立即执行。 2、阻塞状态:…

Maya---机械模型制作

材质效果&#xff08;4&#xff09;_哔哩哔哩_bilibili 三角面 四边面 多边面 *游戏允许出现三角面和四边面 游戏中一般是低模&#xff08;几千个面&#xff09; 动漫及影视是高模 机械由单独零件组合而成&#xff0c;需独立制作 低面模型到高面模型 卡线是为了将模型保…

电脑怎么设置开机密码?3个方法迅速搞定!

电脑已经成为了我们日常办公与学习的重要工具&#xff0c;其中保存有很多重要且需保密的资料&#xff0c;为电脑设置开机密码则是保护资料安全的第一步。那么&#xff0c;电脑怎么设置开机密码呢&#xff1f;今天&#xff0c;小编就为大家介绍3个设置电脑开机密码的方法&#x…

深度学习对抗海洋赤潮危机!浙大GIS实验室提出ChloroFormer模型,可提前预警海洋藻类爆发

2014 年 8 月&#xff0c;美国俄亥俄州托莱多市超 50 万名居民突然收到市政府的一则紧急通知——不得擅自饮用自来水&#xff01; 水是人类生存的基本供给&#xff0c;此通告关系重大&#xff0c;发出后也引起了不小的恐慌。究其原因&#xff0c;其实是美国伊利湖爆发了大规模…

油烟机制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

油烟机制造5G智能工厂物联数字孪生平台&#xff0c;是智能制造与信息技术的深度融合产物。数字孪生工业互联平台通过部署在工厂各个环节的传感器和设备&#xff0c;实时采集、分析和处理生产过程中的海量数据&#xff0c;构建出高度逼真的数字孪生模型。这一模型不仅能够真实反…

基于树莓派ubuntu20.04的ros-noetic小车

目录 一、小车的架构 1.1 总体的概述 1.2 驱动系统 1.3 控制系统 二、驱动系统开发 2.1 PC端Ubuntu20.04安装 2.2 树莓派Ubuntu20.04安装 2.3 PC端虚拟机设置静态IP 2.4 树莓派设置静态IP 2.5 树莓派启动ssh进行远程开发 2.5 arduino ide 开发环境搭建 2.5.1 PC…

深入探索Docker核心原理:从Libcontainer到runC的演化与实现

随着容器技术的发展&#xff0c;Docker从早期的Libcontainer逐步演化到runC&#xff0c;推动了容器运行时的标准化进程。Libcontainer是Docker容器的核心管理工具&#xff0c;而runC则在此基础上发展成为符合OCI&#xff08;Open Container Initiative&#xff09;标准的轻量级…

Vue常用PC端和移动端组件库、Element UI的基本使用(完整引入和按需引入)

目录 1. Vue常用PC端和移动端组件库2. Element UI的基本使用2.1 完整引入2.2 按需引入 1. Vue常用PC端和移动端组件库 提供常用的布局、按钮、输入框、下拉框等UI布局&#xff0c;以组件的形式提供。使用这些组件&#xff0c;结构、样式、交互就都有了 移动端常用UI组件库 Van…

windows10 修改默认输入法

右键桌面&#xff0c;选择个性化 左侧搜索 语言 选择编辑语言和键盘选项 点击键盘 默认替代输入法 选择你想要设置的。重启电脑。如下图

C语言18--头文件

头文件的作用 通常&#xff0c;一个常规的C语言程序会包含多个源码文件&#xff08;.c&#xff09;&#xff0c;当某些公共资源需要在各个源码文件中使用时&#xff0c;为了避免多次编写相同的代码&#xff0c;一般的做法是将这些大家都需要用到的公共资源放入头文件&#xff…

光学超表面在成像和传感中的应用

光学超表面已成为解决笨重光学元件所带来的限制&#xff0c;极具前景的解决方案。与传统的折射传播技术相比&#xff0c;它们提供了一种紧凑、高效的光操纵方法&#xff0c;可对相位、偏振和发射进行先进的控制。本文概述了光学超表面、它们在成像和传感技术中的各种应用以及这…