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库:在Vue项目中使用npm或yarn安装jsPlumb库。 npm install jsplumb 创建一个Vue组件:创建一个Vue组件来容纳jsPlumb的功能和呈现。 <template><div style"margin: 20px"><div style"margin: 20px">&l…...
【BASH】回顾与知识点梳理(二十八)
【BASH】回顾与知识点梳理 二十八 二十八. 例行性工作排程(crontab)28.1 什么是例行性工作排程Linux 工作排程的种类: 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 界面,一般可以通过UI制作工具QtDesigner和纯代码编写两种方式来实现。纯代码实现暂时在这里不阐述了在后续布局章节详细说明,QtDesigner已经继承到开发环境中,在工程中直接双击ui文件就可以直接在QtDesigner设计器中打…...

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

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

线上售楼vr全景看房成为企业数字化营销工具
在房地产业中,VR全景拍摄为买家提供了虚拟看房的全新体验。买家可以通过相关设备,远程参观各个楼盘的样板间和实景,感受房屋的空间布局和环境氛围,极大地提高了购房决策的准确性。对于房地产开发商和中介机构来说,VR全…...
“深入探索JVM内部机制:解密Java虚拟机原理“
标题:深入探索JVM内部机制:解密Java虚拟机原理 摘要:本文将深入探索Java虚拟机(JVM)的内部机制,揭示其工作原理和关键组成部分,包括类加载、内存管理、垃圾回收、即时编译和运行时数据区域等。…...
最长 上升子序列
大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 不清楚蓝桥杯考什么的点点下方👇 考点秘籍 想背纯享模版的伙伴们点点下方👇 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…...

Nginx的介绍
本资料转载于传智教育-解锁你的IT职业薪未来,仅用于学习和讨论,如有侵权请联系 视频地址:04-Nginx的优点_哔哩哔哩_bilibili 资源文档:链接:https://pan.baidu.com/s/1RlFl92FdxRUqc858JSxPSQ 提取码:12…...
[杂项]奥特曼系列影视列表大全
1966年:《奥特曼》「初代奥特曼」 1967年:《奥特赛文》 1971年:《归来的奥特曼》「杰克奥特曼」 1972年:《艾斯奥特曼》 1973年:《泰罗奥特曼》 1974年:《雷欧奥特曼》 1979年动画版:《乔尼亚斯…...

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

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

【探索Linux】—— 强大的命令行工具 P.5(yum工具、git 命令行提交代码)
阅读导航 前言一、软件包管理器 yum1.yum的概念yum的基本指令使用例子 二、git 命令行提交代码总结温馨提示 前言 前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C的一些知识,也学习了一些Linux的基本操作,也了…...
jdbc 使用rewriteBatchedStatements=true后,报错
jdbc 使用rewriteBatchedStatementstrue后,报错了 rewriteBatchedStatementstrue解释 rewriteBatchedStatementstrue是一个配置选项,它影响MySQL JDBC驱动程序的行为。JDBC是Java数据库连接的标准。当你使用Java程序连接MySQL数据库时,你需要…...

第G1周:生成对抗网络(GAN)入门
🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者:[K同学啊] 一、理论基础 生成对抗网络(Generative Adversarial Networks, GAN)是近年来深度学习领域…...

Stable Diffusion基础:ControlNet之图片高仿效果
今天继续给大家分享AI绘画中 ControlNet 的强大功能,本次的主角是 Reference,它可以将参照图片的风格迁移到新生成的图片中,这句话理解起来很困难,我们将通过几个实例来加深体会,比如照片转二次元风格、名画改造、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. 官方相关链接 官网:https://jxls.sourceforge.net/reference/if_command.html JxlsAPI: https://jxls.sourceforge.net/javadoc/jxls/index.html Jxls POI: https://jxls.sourceforge.net/javadoc/jxls/index.html Jxls JExcel࿱…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...