当前位置: 首页 > news >正文

TypeScript教程(五)条件语句,循环,函数

一、条件语句

条件语句基于不同的条件来执行不同的动作

1.if语句:只有当指定条件为true时,使用该语句来执行代码

2.if...else语句:当条件为true时执行代码,当条件为else时执行其他代码

3.if...else if...else语句:使用该语句来选择多个代码块之一来执行

4.switch语句:使用该语句来选择多个代码块之一来执行

1.if语句

由一个布尔表达式后跟一个或多个语句组成

语法:

if(boolean_expression){# 在布尔表达式 boolean_expression 为 true 执行
}

如果布尔表达式为true,则if内的语句块会被执行,否则if语句后的第一组代码将被执行

2.if...else语句

一个if语句后面一个可选的else语句,else在布尔表达式为false时被执行

语法

if(boolean_expression){# 在布尔表达式 boolean_expression 为 true 执行
}else{# 在布尔表达式 boolean_expression 为 false 执行
}

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

在执行多个判断条件时有用

语法

if(boolean_expression 1) {# 在布尔表达式 boolean_expression 1 为 true 执行
} else if( boolean_expression 2) {# 在布尔表达式 boolean_expression 2 为 true 执行
} else if( boolean_expression 3) {# 在布尔表达式 boolean_expression 3 为 true 执行
} else {# 布尔表达式的条件都为 false 时执行
}

注:

1.一个if判断语句可以有0或1个else语句,必须在if...else后面

2.一个if判断语句可以有0个或者多个else...if,必须在else之前

3.一旦执行了else...if里的代码,后面的else...if或else将不再执行

4.switch...case语句

允许测试一个变量等于多个值时的情况,每个值为一个case,且被测试的变量会对每个switch case进行检查

语法:

switch(expression){case constant-expression  :statement(s);break; /* 可选的 */case constant-expression  :statement(s);break; /* 可选的 *//* 您可以有任意数量的 case 语句 */default : /* 可选的 */statement(s);
}

规则:

1.switch 语句中的 expression 是一个要被比较的表达式,可以是任何类型,包括基本数据类型(如 number、string、boolean)、对象类型(如 object、Array、Map)以及自定义类型(如 class、interface、enum)等。

2.在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。

3.case 的 constant-expression 必须与 switch 中的变量 expression 具有相同或兼容的数据类型。

4.当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。

5.当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。

6.不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。

7.一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default 关键字则表示当表达式的值与所有 case 值都不匹配时执行的代码块。default case 中的 break 语句不是必需的。

二、循环

1.for循环

用于多次执行一个语句序列,减缓管理循环变量的代码

语法:

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

流程解析:

1.init会先被执行,且只会执行一次,这一步允许声明并初始化任何循环控制变量,也可以在这里不屑任何语句,一个;即可

2.然后会判断condition,如果为true,则执行循环主体,如果为false,则不执行主体,且控制流会跳转到紧接着for循环的下一条语句

3.在执行完for循环主体后,控制流会跳回上面的increment语句,允许更新循环控制变量,可以留空

4.条件再次被判断,如果为true,则执行循环,过程不断重复,在条件为false时,结束循环

2.for...in循环

用于一组值的集合或列表进行迭代输出

语法:

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

val需要为string或any类型

3.for...of,forEach,every和some循环

1.for...of语句创建一个循环来迭代可迭代的对象,在ES6中引入的for..of循环,以替代for...in和forEach(),并支持新的迭代协议,for...of允许遍历Arrays(数组),Strings(字符串),Maps(映射),Sets(集合)等可迭代的数据结构等

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

2.forEach,every和some是javaScript的循环语法,TypeScript为JavaScript的超集,所以支持

因为forEach在iteration中是无法返回的,所以可以使用every和some来取代forEach

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

4.while循环

while语句在指定条件为true时,重复执行语句或语句组,循环主体之前会先测试条件

语法:

while(condition)
{statement(s);
}

statement(s)可以是一个单独的语句,也可以是几个语句组成的代码块

condition可以是任意的表达式,当条件为true时执行循环,当条件为false时,循环退出

5.do...while循环

不像for和while循环,他们是循环头部测试循环条件,do...while是在尾部测试循环条件

语法:

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

因为条件表达式语句在尾部,所以循环中的statement(s)会在条件被测试之前至少执行一次

如果条件为true,控制流会跳转回上面的do,然后重新执行循环中的statement(s),这个过程会不断重复,直到条件为false为止

6.break语句

两种特性:

1.break出现在一个循环体内时,循环会立刻终止,切程序流会紧接着循环下一条语句

2.可用于终止switch语句中的一个case

如果使用的是嵌套循环,break语句会停止执行最内层的循环,然后开始执行模块之后的下一行代码

语法:

break;

7.continue语句

continue语句有点像break语句,但是他是跳过当前循环中的代码,强制执行下一次循环

对于for循环,continue语句执行后自增语句仍会执行,对于while和do...while循环,continue语句会重新执行条件判断语句

语法:

continue;

8.无限循环

一直在运行不会停止的循环,for和while都可以创建无限循环

for创建无限循环语法格式:

for(;;) { // 语句
}

while创建无限循环语法格式:

while(true) { // 语句
} 

三、函数

函数是一组一起执行一个任务的语句

相关文章:

TypeScript教程(五)条件语句,循环,函数

一、条件语句 条件语句基于不同的条件来执行不同的动作 1.if语句:只有当指定条件为true时,使用该语句来执行代码 2.if...else语句:当条件为true时执行代码,当条件为else时执行其他代码 3.if...else if...else语句:…...

vue使用jsplumb 流程图

安装jsPlumb库&#xff1a;在Vue项目中使用npm或yarn安装jsPlumb库。 npm install jsplumb 创建一个Vue组件&#xff1a;创建一个Vue组件来容纳jsPlumb的功能和呈现。 <template><div style"margin: 20px"><div style"margin: 20px">&l…...

【BASH】回顾与知识点梳理(二十八)

【BASH】回顾与知识点梳理 二十八 二十八. 例行性工作排程(crontab)28.1 什么是例行性工作排程Linux 工作排程的种类&#xff1a; at, cronCentOS Linux 系统上常见的例行性工作 28.2 仅执行一次的工作排程atd 的启动at 的运作方式实际运作单一工作排程at 工作的管理batch&…...

LangChain源码逐行解密之系统(二)

LangChain源码逐行解密之系统 20.2 serapi.py源码逐行剖析 我们可以看一下Google查询的例子,在LangChain中有多种实现的方式。 如图20-5所示,在utilities的serpapi.py代码文件中实现了SerpAPIWrapper。 图20- 5 utilities的serpapi.py的SerpAPIWrapper 在langchain目录的se…...

QT的设计器介绍

设计器介绍 Qt制作 UI 界面&#xff0c;一般可以通过UI制作工具QtDesigner和纯代码编写两种方式来实现。纯代码实现暂时在这里不阐述了在后续布局章节详细说明&#xff0c;QtDesigner已经继承到开发环境中&#xff0c;在工程中直接双击ui文件就可以直接在QtDesigner设计器中打…...

[LitCTF 2023]Ping

因为直接ping会有弹窗。这里在火狐f12,然后f1选禁用javascript,然后ping 然后输入127.0.0.1;cat /flag 得到flag&#xff0c; 查看其他大佬的wp &#xff0c;这里还可以抓包。但是不知道为什么我这里的burp 用不了...

Spring Cloud面试突击班1

Spring Cloud面试突击班1 1.Spring Cloud 中有哪些组件&#xff0c;整个项目架构中我们的重点又有哪些&#xff1f; Spring Cloud 是一套基于Spring Boot的微服务解决方案。 Spring Cloud生态在国内主流的分为两套&#xff0c;一套是以奈飞开源的Spring Cloud Netfilx 20%&a…...

线上售楼vr全景看房成为企业数字化营销工具

在房地产业中&#xff0c;VR全景拍摄为买家提供了虚拟看房的全新体验。买家可以通过相关设备&#xff0c;远程参观各个楼盘的样板间和实景&#xff0c;感受房屋的空间布局和环境氛围&#xff0c;极大地提高了购房决策的准确性。对于房地产开发商和中介机构来说&#xff0c;VR全…...

“深入探索JVM内部机制:解密Java虚拟机原理“

标题&#xff1a;深入探索JVM内部机制&#xff1a;解密Java虚拟机原理 摘要&#xff1a;本文将深入探索Java虚拟机&#xff08;JVM&#xff09;的内部机制&#xff0c;揭示其工作原理和关键组成部分&#xff0c;包括类加载、内存管理、垃圾回收、即时编译和运行时数据区域等。…...

最长 上升子序列

大家好 我是寸铁 希望这篇题解对你有用&#xff0c;麻烦动动手指点个赞或关注&#xff0c;感谢您的关注 不清楚蓝桥杯考什么的点点下方&#x1f447; 考点秘籍 想背纯享模版的伙伴们点点下方&#x1f447; 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…...

Nginx的介绍

本资料转载于传智教育-解锁你的IT职业薪未来&#xff0c;仅用于学习和讨论&#xff0c;如有侵权请联系 视频地址&#xff1a;04-Nginx的优点_哔哩哔哩_bilibili 资源文档&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1RlFl92FdxRUqc858JSxPSQ 提取码&#xff1a;12…...

[杂项]奥特曼系列影视列表大全

1966年&#xff1a;《奥特曼》「初代奥特曼」 1967年&#xff1a;《奥特赛文》 1971年&#xff1a;《归来的奥特曼》「杰克奥特曼」 1972年&#xff1a;《艾斯奥特曼》 1973年&#xff1a;《泰罗奥特曼》 1974年&#xff1a;《雷欧奥特曼》 1979年动画版&#xff1a;《乔尼亚斯…...

java代码日记--java 基础语法

java代码日记 在线运行 本地运行环境配置 Java 实例 实战 java8 Java 基础语法 一个Java程序可以认为是一系列对象的集合&#xff0c;而这些对象通过调用彼此的方法来协同工作。 下面简要介绍下类、对象、方法和实例变量的概念。 对象&#xff1a;对象是类的一个实例&…...

Spring中的IOC与DI-细胞内物质与传递

对IOC的认识 Spring Inversion of Control简称Spring IOC&#xff0c;是一种设计原则&#xff0c;通过它可以实现对象之间的解耦。通过Spring DI(Dependency Injection)依赖注入实现对象生命周期管理&#xff0c;为开发者提供对象创建、使用方式。 Spring中的Bean 在Spring框…...

【探索Linux】—— 强大的命令行工具 P.5(yum工具、git 命令行提交代码)

阅读导航 前言一、软件包管理器 yum1.yum的概念yum的基本指令使用例子 二、git 命令行提交代码总结温馨提示 前言 前面我们讲了C语言的基础知识&#xff0c;也了解了一些数据结构&#xff0c;并且讲了有关C的一些知识&#xff0c;也学习了一些Linux的基本操作&#xff0c;也了…...

jdbc 使用rewriteBatchedStatements=true后,报错

jdbc 使用rewriteBatchedStatementstrue后&#xff0c;报错了 rewriteBatchedStatementstrue解释 rewriteBatchedStatementstrue是一个配置选项&#xff0c;它影响MySQL JDBC驱动程序的行为。JDBC是Java数据库连接的标准。当你使用Java程序连接MySQL数据库时&#xff0c;你需要…...

第G1周:生成对抗网络(GAN)入门

&#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同学啊] 一、理论基础 生成对抗网络&#xff08;Generative Adversarial Networks, GAN&#xff09;是近年来深度学习领域…...

Stable Diffusion基础:ControlNet之图片高仿效果

今天继续给大家分享AI绘画中 ControlNet 的强大功能&#xff0c;本次的主角是 Reference&#xff0c;它可以将参照图片的风格迁移到新生成的图片中&#xff0c;这句话理解起来很困难&#xff0c;我们将通过几个实例来加深体会&#xff0c;比如照片转二次元风格、名画改造、AI减…...

TCGA数据下载推荐:R语言easyTCGA包

#使用easyTCGA获取数据 #清空 rm(listls()) gc() # 安装bioconductor上面的R包 options(BioC_mirror"https://mirrors.tuna.tsinghua.edu.cn/bioconductor") if(!require("BiocManager")) install.packages("BiocManager") if(!require("TC…...

JLSX 模版指令导出Excel

1. 官方相关链接 官网&#xff1a;https://jxls.sourceforge.net/reference/if_command.html JxlsAPI&#xff1a; https://jxls.sourceforge.net/javadoc/jxls/index.html Jxls POI&#xff1a; https://jxls.sourceforge.net/javadoc/jxls/index.html Jxls JExcel&#xff1…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...