四、TypeScript 语句


现在我们来学习 TypeScript 语句,通过本次学习,要求达到以下目标:

  1. 能够使用条件语句
  2. 能够使用三元运算符简化条件语句
  3. 能够使用循环语句
  4. 能够使用断点调试

1. 条件语句

1.1 概述

​ 生活中,我们打开网站看电影,电影分两类:1 免费电影 2 Vip 电影。 这时候如果我们播放 Vip 电影时,首先会判断用户是不是 Vip: 1. 如果是 Vip,就可以看完整电影; 2. 如果不是 Vip,只能试看5分钟。

​ 那么我们上面讲到的“看电影”的例子,跟我们今天要学的“条件语句”有什么联系呢?实际上,如果你想在typescript 中实现这样的判断功能,根据不同的情况做不同的事件,那就要用到条件语句

​ 接下来我们就来看一下条件语句的说明:

条件语句:根据判断条件的结果(真或假),来执行不同的代码,从而实现不同功能。

条件执行时,首先判断条件是否满足。

  • 如果 条件满足,就做某件事情(情况1)

  • 如果 条件不满足,就做另外一件事情(情况2)

在这里插入图片描述

条件语句,也叫分支语句,不同的情况就是不同的分支。

1.2 if 语句

​ 在 TypeScript 中想要实现条件判断就要用到 if 语句。也就是说,刚刚我们所讲的“看电影”的例子,就可以用if语句来判断用户是不是vip。

if语句到底怎么用呢?我们来看一下if 语句的语法:

if (判断条件) {

条件满足时,要做的事情

}

解释一下以上语法:

  • 判断条件:返回布尔类型(true 或 false)。

    • 如果 判断条件 为真,就执行 要做的事情;

    • 否则,如果判断条件为假,则不执行花括号中的代码。

​ 在这里,我们补充一下概念说明:语句,就是一个完整的句子,用来使某件事情发生(或实现某个功能)。

1.3 else 语句

​ 在 TypeScript 中 else 语句必须配合 if 语句来使用。 else 语句表示:条件不满足,要做的事情(if 语句的对立面)。 我们来看一下 else 语句的语法:

if (判断条件) {

条件满足时,要做的事情

} else {

条件不满足,要做的事情

}

解释一下以上语法:

  • 判断条件:返回布尔类型(true 或 false)。
    • 如果 判断条件 为真,就执行 要做的事情;
    • 否则,如果 判断条件 为假,就执行 条件不满足时要做的事情。

接下来我们看一个案例,来巩固一下if…else语句:

案例:

根据年龄做出判断:

  1. 如果年龄小于18,打印‘回家看小猪佩奇吧’
  2. 否则,就打印 ‘欢迎来到王者荣耀’

分析:

// 使用变量age来作为年龄

let age:number = 17

if…else语句的重点,就是要找出判断条件。

// 判断条件:年龄是否小于18岁,返回布尔类型

age < 18

最终代码:

let age:number = 17;

if(age < 18){
	console.log('回家看小猪佩奇吧');
}eles{
	console.log('欢迎来到王者荣耀');
}

2. 三元运算符

​ 实际上,三元运算符的作用与刚刚我们讲的 if…else 语句类似。 它的作用也是根据判断条件的真假,得到不同的结果。

我们来看一下三元运算符语法:

结果 = 判断条件 ? 值1 : 值2

解释一下以上语法:

  • 如果判断条件为真,结果为 值1;

  • 否则,如果判断条件为假,结果为 值2。

这里我们要注意:得到结果的类型由值1和值2的类型决定(值1和值2的类型一般相同)。

​ 既然三元运算符的作用与刚刚我们讲的 if…else 语句类似,那接下来我们就通过把前面的案例用三元运算符改写,更好的理解三元运算符。

案例:

根据年龄做出判断(使用 三元运算符 ):

  1. 如果年龄小于18,打印‘回家看小猪佩奇吧’
  2. 否则,就打印 ‘欢迎来到王者荣耀’

分析:

// 使用变量age来作为年龄

let age:number = 17

// 结果用变量result接收结果

let result:String = ‘’

找出判断条件。

// 判断条件:年龄是否小于18岁,返回布尔类型

age < 18

最终代码:

let result:String =  age < 18 ? '回家看小猪佩奇吧' : '欢迎来到王者荣耀'

3. 循环语句

3.1 概述

​ 首先我们来通过两个例子来说明我们为什么要学习循环语句。生活中,经常重复做某件事情,比如:

	1. 上学时作业写 3 遍。 
	2. 女朋友说:爱我就对我说 100 遍“我爱你”。 

​ 同样的,在程序中,我们也会经常做一些重复的事情,比如这样一个需求:在 TS 中,打印 3 遍以下内容:

‘北冥有鱼,其名为鲲。鲲之大,一锅装不下’

​ 这时候我们可以怎么做?像这样:

console.log('北冥有鱼,其名为鲲。鲲之大,一锅装不下');
console.log('北冥有鱼,其名为鲲。鲲之大,一锅装不下');
console.log('北冥有鱼,其名为鲲。鲲之大,一锅装不下');

​ 那如果现在需求变了,要我们打印100遍,1000遍,10000遍呢?我们也要这样复制粘贴吗?这时候就需要使用循环语句了。

​ 在 TypeScript 中,要实现重复做某件事情,就需要用到循环语句,来减少重复劳动提升效率。

3.2 for 循环

​ 在 TypeScript 中,我们如何使用循环语句呢?for 循环就是实现重复做某件事情的循环语句。

注意:for 循环是 TS 基础知识的重难点,语法比较复杂。

下面我们从写作业的例子来看看for语句的组成:

需求:

老师要求我们作业写 3 遍

分析:

先准备,写作业的遍数,默认为:1。

第 1 遍:先判断遍数是否 <= 3(是);写作业;遍数 + 1(准备开始第2遍)。

第 2 遍:先判断遍数是否 <= 3(是);写作业;遍数 + 1(准备开始第3遍)。

第 3 遍:先判断遍数是否 <= 3(是);写作业;遍数 + 1(准备开始第4遍)。

第 4 遍:先判断遍数是否 <= 3(否);结束写作业。

从上面的分析过程可以看出,for 循环的组成:

  1. 初始化语句:声明计数器变量用来记录循环次数(执行一次)。

  2. 判断条件:判断循环次数是否达到目标次数。

  3. 计数器更新:完成一次循环让计数器数量加1。

  4. 循环体:循环的代码,也就是要重复做的事情。

3.3 for 循环的基本使用

下面我们就来看一下for语句的语法:

for (初始化语句; 判断条件; 计数器更新) {

循环体

}

我们对以上语法进行解释:

  • 初始化语句:声明计数器变量,记录循环次数。

    3.2的案例中,作业从第一遍开始,所以初始化 i 为 1

    for (let i: number = 1; )

  • 判断条件:判断循环次数是否达到目标次数。

    3.2的案例中,作业要写3遍,所以判断条件为i <= 3;

    for (let i: number = 1; i <= 3; )

  • 计数器更新:计数器数量加1。

    for (let i: number = 1; i <= 3; i++)

  • 循环体:重复执行的代码,也就是要重复做的事情。

    for (let i: number = 1; i <= 3; i++){

    ​ console.log(‘写作业’);

    }

3.4 for 循环的执行过程

​ for 循环的语法比较复杂,搞明白代码执行顺序,才是真正理解并掌握了 for 循环。 现在我们就来弄清楚for 循环的执行过程 。

  1. 首先执行初始化语句:只会执行一次。

  2. 接着重复执行的部分:判断条件、循环的代码、计数器更新。

    这一部分是比较复杂的。每次执行:

    1. 判断条件

      • 如果判断为真,执行循环体
      • 如果判断为真,结束循环
    2. 计数器更新,跳转到2.1

3.5 断点调试

​ 相信大家都有个疑惑:我们是如何知道 for 循环执行过程的呢?答案就是:断点调试 。我们可以借助断点调试,观察代码的执行过程。

断点(Breakpoint):程序暂停的位置(调试时,程序运行到此处,就会暂停)

​ 这里我们要注意一下:VSCode调试TS代码是需要配置的。

接下来我们就来学习VSCode - 断点调试配置

  • 第一步:准备要调试的ts文件。这里我们准备了一个a.ts文件

  • 第二步:添加调试配置

    1. 打开调试窗口:点击左侧活动栏倒数第二个按钮(Debug)

    2. 生成默认配置:点击DEBUG后面的下拉框,选择添加配置

    3. 修改配置内容如下:

      {
        // 使用 IntelliSense 了解相关属性。 
        // 悬停以查看现有属性的描述。
        // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
          {
            "type": "node",
            "request": "launch",
            "name": "调试TS代码",
            // ts-node 命令: “直接”运行ts代码。
            // 作用:调试时加载ts-node包(在调试时“直接”运行ts代码)
            "runtimeArgs": ["-r", "ts-node/register"],
            // 此处的 a.ts 表示要调试的 TS 文件( 可修改为其他要调试的ts文件 )
            "args": ["${workspaceFolder}/a.ts"]
          }
        ]
      }
      
  • 第三步:安装调试用到的包

    1. 在当前目录中,打开终端窗口

    2. 在终端中输入以下命令:

      # 注意:原来通过 -g(全局)安装的包,在调试时不生效,需要在当前目录中单独安装
      # 调试TS代码,依赖这两个包
      npm i ts-node typescript
      

调试技巧:

​ 我们可以查看 console.log 输出(调试控制台)。如果我们想知道变量的值,可以:1. 鼠标移入 2 添加到左侧监视窗口

​ 下面给出2个for循环语句的案例,大家可以通过断点调试,更好的理解for 循环的执行过程

案例一:

买了 5 个包子,吃包子。

代码:

for(let i:number = 1; i <= 5; i++){
	console.log('现在吃第' + i + '个包子');
}

案例二:

打印出1+2+3+4+5+6+…+100的结果

代码:

let sum:number = 0;
for(let i:number = 1; i <= 100; i++){
	sum += i;
}
console.log(sum);

3.6 break和continue

breakcontinue 常用在循环语句中,用来改变循环的执行过程。什么是改变循环的执行过程?实际上,for循环执行的特点是:连续且不间断。比如我们前面说的吃包子的例子就是不间断的。但是有的场景下,我们可以需要改变循环的执行过程。这种情况下,我们就用到breakcontinue。接下来我们就分别来学习breakcontinue

break 能够让循环提前结束(终止循环)。 我们前面提到的”吃包子“的例子是连续且不间断地吃完了5个包子,现在我们改变一下需求:吃到(没吃)第3个饱了,剩下的就不吃了。

​ 现在我们就不能单纯的用for语句做循环了,而是要在每次吃包子前判断,这个包子是不是第3个,如果不是,就继续吃;如果是,就停下来,不吃了。这时候我们就可以用break来提前结束循环:

for (let i: number = 1; i <= 5; i++) { 
	if (i === 3) { 
		break 
	}
	console.log('正在吃第' + i + '个包子') 
}

continue 能够让循环间断执行(跳过本次循环,继续下一次循环)。这句话什么意思呢?同样我们来举个例子,还是吃包子,吃到第3个有虫子,这个就不再吃了,但没吃饱,继续吃下一个。 这时候就要用到continue 了。

for (let i: number = 1; i <= 5; i++) { 
	if (i === 3) { 
		continue 
	}
	console.log('正在吃第' + i + '个包子') 
}

束循环:

for (let i: number = 1; i <= 5; i++) { 
	if (i === 3) { 
		break 
	}
	console.log('正在吃第' + i + '个包子') 
}

continue 能够让循环间断执行(跳过本次循环,继续下一次循环)。这句话什么意思呢?同样我们来举个例子,还是吃包子,吃到第3个有虫子,这个就不再吃了,但没吃饱,继续吃下一个。 这时候就要用到continue 了。

for (let i: number = 1; i <= 5; i++) { 
	if (i === 3) { 
		continue 
	}
	console.log('正在吃第' + i + '个包子') 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值