鸿蒙OS应用开发之语句

在程序开发中,已经有上面的运算符和数据类型了,可以满足了大部的需求,但是这些程序还是比较简单的计算和逻辑运算,如果需要复杂的计算和逻辑处理,就需要采用复杂逻辑程序块来处理了,也就是复杂条件语句才能解决。主要的语句有条件语句、switch语句、条件表达式语句、for循环语句、for-of语句、while语句、Do-while语句、Break语句、Continue语句、Throw和Try语句。

If语句

if语句用于需要根据逻辑条件执行不同语句的场景。当逻辑条件为真时,执行对应的一组语句,否则执行另一组语句(如果有的话)。 else部分也可能包含if语句。

if (condition1) {

  // 语句1

} else if (condition2) {

  // 语句2

} else {

  // else语句

}

采用的形式如上所示。

但是可以有几种形式,第一种形式:

这种只有if语句部分,并没有else部分。

第二种形式:

这里有if部分和else部分,

最后一种形式就是if和else嵌套形式:

通过if-else语句,就可以执行复杂的逻辑语句,因为每一个大括号里都是一块更加复杂的语句,这样就可以不断一层一层判断,就可以解决更多的逻辑处理问题。不过在编程时要注意嵌套的层次,一般不要超过三层的嵌套,如果要超过这个,就需要分成不同的函数来嵌套调用。

条件语句是使用比较多的语句,毕竟很多判断选择都需要使用它。

Switch语句

使用switch语句来执行与switch表达式值匹配的代码块。这种情况一般是一个变量存在多个状态,选择其中一个执行。特别适合状态机这样处理,又或者适合减少if语句的编写。像状态机多层状态的选择就比较容易理解。

switch (expression) {

  case label1: // 如果label1匹配,则执行

    // ...

    // 语句1

    // ...

    break; // 可省略

  case label2:

  case label3: // 如果label2或label3匹配,则执行

    // ...

    // 语句23

    // ...

    break; // 可省略

  default:

    // 默认语句

}

下面的例子:

switch表达式的类型必须是number、enum或string。

label必须是常量表达式或枚举常量值。

如果switch表达式的值等于某个label的值,则执行相应的语句。

如果没有任何一个label值与表达式值相匹配,并且switch具有default子句,那么程序会执行default子句对应的代码块。

break语句(可选的)允许跳出switch语句并继续执行switch语句之后的语句。

如果没有break语句,则执行switch中的下一个label对应的代码块。

条件表达式

条件表达式由第一个表达式的布尔值来决定返回其它两个表达式中的哪一个。

condition ? expression1 : expression2

例子如下:

条件表达式比较适合用来判断大小的情况。或者简短的条件选择,不用写if语句这么复杂的情况。

For语句

for语句会被重复执行,直到循环退出语句值为false。

循环语句是比较常用的语句,毕竟很多数据的处理都是一个队列,或者列表,那么就需要遍历检查它是否满足某种情况。

比如下面的例子:

for循环语句的形式:

for ([init]; [condition]; [update]) {

  statements

}

for语句的执行流程如下:

1、 执行init表达式(如有)。此表达式通常初始化一个或多个循环计数器。

2、 计算condition。如果它的值为true(或者没有该语句),则执行循环主体的语句。如果它的值为false,则for循环终止。

3、 执行循环主体的语句。

4、 如果有update表达式,则执行该表达式。

5、 回到步骤2。

For-of语句

使用for-of语句可遍历数组或字符串。示例如下:

for (forVar of expression) {

  statements

}

具体的例子如下:

While语句

只要condition的值为true,while语句就会执行statements语句。示例如下:

while (condition) {

  statements

}

例子如下:

基中条件部分是一个逻辑表达式。

Do-while语句

在condition的值为false之前,statements语句会重复执行。示例如下:

do {

  statements

} while (condition)

这种情况是先执行复杂语句,再判断条件,而while语句是先判断条件再执行复合语句。

Break语句

使用break语句可以终止循环语句或switch。

前面已经在switch里使用了,用于跳出每一个分支情况。它还可以使用在循环里,可以提前跳出循环,比如循环执行一半,再判断满足了条件,如果没有break语句,就没有办法提前退出循环了。

上面的例子就是提前退出了循环,由于这个循环是一个无穷的循环,如果没有退出语句,就没有办法这样编写了。

如果break语句后带有标识符,则将控制流转移到该标识符所包含的语句块之外。

let x = 1

label: while (true) {

  switch (x) {

    case 1:

      // statements

      break label // 中断while语句

  }

}

Continue语句

continue语句会停止当前循环迭代的执行,并将控制传递给下一个迭代。

let sum = 0

for (let x = 0; x < 100; x++) {

  if (x % 2 == 0) {

    continue

  }

  sum += x

}

在上面的循环里,执行到continue语句时,就会提前结束当前循环,不再执行后面的sum += x的语句。

Throw和Try语句

throw语句用于抛出异常或错误:

throw new Error('this error')

try语句用于捕获和处理异常或错误:

try {

  // 可能发生异常的语句块

} catch (e) {

  // 异常处理

}

支持finally语句:

function processData(s: string) {

  let error: Error | null = null

  try {

    console.log('Data processed: ', s)

    // ...

    // 可能发生异常的语句

    // ...

  } catch (e) {

    error = e as Error

    // ...

    // 异常处理

    // ...

  } finally {

    if (error != null) {

      console.log(`Error caught: input='${s}', message='${error.message}'`)

    }

  }

}

到这里就学习完成基本的语句,这些需要经常练习才能合适地使用它。

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

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

相关文章

模型 心流

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。完全投入其中。 1 心流的应用 1.1 优秀运动员的心流体验 迈克尔乔丹&#xff08;Michael Jordan&#xff09;&#xff1a;篮球之神乔丹在比赛中经常进入心流状态&#xff0c;他曾表示&#xff…

DIY手工艺作坊网站建设的作用如何

我国文化悠久流长&#xff0c;很多手工艺品制作技术放在如今依然有很高的需求度&#xff0c;加之现代新增的技艺&#xff0c;样式多且艺术性强&#xff0c;比如常见的陶器手工制作技术&#xff0c;当然还有更多。 而对相关作坊来说&#xff0c;除了艺术传承外&#xff0c;还需…

接触刚性环境任务下的机器人力控(阻抗)性能测试

内涵 接触刚性环境任务下的机器人力控&#xff08;阻抗&#xff09;性能测试旨在评估机器人在与刚性物体交互时的性能表现。这种测试通过调整机器人的控制参数&#xff0c;如期望刚度和期望阻尼等&#xff0c;并分析记录的数据&#xff0c;旨在确保机器人能够在执行任务时保持…

短剧分销小程序/APP开发:开启短剧收益时代

今年&#xff0c;短剧火爆出圈&#xff0c;市场规模将达至200亿元至300亿元。国内全全平台付费短剧日充值金额为6000万元&#xff0c;短剧作为一种“快餐式”文化迅速爆火。 短剧契合了观众娱乐时间碎片化的发展趋势&#xff0c;相比于传统的电视剧&#xff0c;短剧节奏快、剧…

MongoDB的连接数据库,创建、删除数据库,创建、删除集合命令

本文主要介绍MongoDB的连接数据库&#xff0c;创建、删除数据库&#xff0c;创建、删除集合命令。 目录 MongoDB连接数据库连接到本地 MongoDB 实例连接到远程 MongoDB 实例 MongoDB创建和删除数据库MongoDB创建和删除集合创建集合删除集合 MongoDB连接数据库 连接 MongoDB 数…

P1317 低洼地题解

题目 一组数&#xff0c;分别表示地平线的高度变化。高度值为整数&#xff0c;相邻高度用直线连接。找出并统计有多少个可能积水的低洼地&#xff1f; 如图&#xff1a;地高变化为 [0,1,0,2,1,2,0,0,2,0]。 输入输出格式 输入格式 两行&#xff0c;第一行n, 表示有n个数。第…

openGauss学习笔记-151 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_basebackup

文章目录 openGauss学习笔记-151 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_basebackup151.1 背景信息151.2 前提条件151.3 语法151.4 示例151.5 从备份文件恢复数据 openGauss学习笔记-151 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_basebackup 151.1 …

基于java swing 药品销售管理系统

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…

短视频账号剪辑矩阵+无人直播系统源头开发

抖去推爆款视频生成器&#xff0c;通过短视频矩阵、无人直播&#xff0c;文案引流等&#xff0c;打造实体商家员工矩阵、用户矩阵、直播矩阵&#xff0c;辅助商家品牌曝光&#xff0c;团购转化等多功能赋能商家拓客引流。 短视频矩阵通俗来讲就是批量剪辑视频和批量发布视频&am…

Multisim电路仿真软件使用教程

安装直接参考这篇文章&#xff1a;Multisim 14.0安装教程 软件管家公众号里有很多软件&#xff0c;需要的可以去找下然后安装&#xff0c;这里用的是14.0版本。 这里有个大神的详细教程&#xff0c;可以参考&#xff1a; Multisim软件使用详细入门教程&#xff08;图文全解&…

Python房价分析(二)随机森林分类模型

目录 1 数据预处理 1.1 房价数据介绍 1.2 数据预处理 1.2.1 缺失值处理 1.2.2异常值处理 1.2.3 数据归一化 1.2.4 分类特征编码 2 随机森林模型 2.1 模型概述 2.2 建模步骤 2.3 参数搜索过程 3模型评估 3.1 模型评估结果 3.2 混淆矩阵 3.3 绘制房价类别三分类的…

面试官:性能测试瓶颈调优你是真的会吗?

引言&#xff1a;性能瓶颈调优 在实际的性能测试中&#xff0c;会遇到各种各样的问题&#xff0c;比如 TPS 压不上去等&#xff0c;导致这种现象的原因有很多&#xff0c;测试人员应配合开发人员进行分析&#xff0c;尽快找出瓶颈所在。 理想的性能测试指标结果可能不是很高&…

Latex公式中矩阵的方括号和圆括号表示方法

一、背景 在使用Latex写论文时&#xff0c;不可避免的涉及到矩阵公式。有的期刊要求矩阵用方括号&#xff0c;有的期刊要求矩阵用圆括号。因此&#xff0c;特记录一下Latex源码在两种表示方法上的区别&#xff0c;以及数组和方程组的扩展。 二、矩阵的方括号表示 首先所有的…

OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存

Android现行的Camera API2机制可以通过onImageAvailable(ImageReader reader)回调从底层获取到Jpeg、Yuv和Raw三种格式的Image&#xff0c;然后通过保存Image实现拍照功能&#xff0c;但是却并没有Api能直接在上层直接拿到实时预览的数据。 Android Camera预览的实现是上层下发…

Java学习笔记——instanceof关键字

instanceof关键字&#xff1a; 作用&#xff1a;保证对象向下转型的安全性在对象向下转型前判断某一对象实例是否属于某个类 判断时&#xff0c;如果对象是null&#xff0c;则 instanceof 判断结果为 false

Tr0ll

信息收集 探测主机存活信息&#xff1a; nmap -sn --min-rate 10000 192.168.182.0/24Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-14 15:45 CST Nmap scan report for 192.168.182.1 Host is up (0.00026s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap…

Linux环境下socket本地通信

最近项目有用到了socket本地通信&#xff0c;故复习一下。之前都是基于本地虚拟机的ip地址通信的&#xff0c;现在项目&#xff0c;Linux单板上面有2个进程需要通信&#xff0c;故用到了本地socket通信&#xff0c;主要其实就是用了sockfd,文件描述符&#xff0c;也叫句柄。 服…

java接入gpt开发

前情提要 本次文章使用编译器为IDEA2020 使用GPT模型为百度旗下的千帆大模型 如果是个人用或者不流传出去&#xff0c;可以无脑入&#xff0c;因为会免费送20块钱&#xff08;够用上万次&#xff09; 代金卷查看 正式教程&#xff1a; 百度智能云控制台 (baidu.com) 按照步…

JMS(Java Message Service)使用指南

介绍 JMS即Java消息服务&#xff08;Java Message Service&#xff09;应用程序接口&#xff0c;是一个Java平台中关于面向消息中间件&#xff08;MOM&#xff09;的API&#xff0c;用于在两个应用程序之间&#xff0c;或分布式系统中发送消息&#xff0c;进行异步通信。它是一…

基于单片机智能病床呼叫系统设计

**单片机设计介绍&#xff0c;基于单片机智能病床呼叫系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能病床呼叫系统是一种利用单片机技术设计的医疗设备&#xff0c;它能够帮助病人在住院期间快速、方便…