控制语句

1. 分支语句

  • if语句、if...else语句、if...else if...else语句、switch...case语句。

代码演示如下:

//if语句
if( 布尔表达式 ) {
    // 布尔表达式为true执行语句块
}

//if...else语句
if( 布尔表达式 ) {
    // 布尔表达式为true执行语句块
}else {
    // 布尔表达式为false执行语句块
}

//switch...case语句
switch( 表达式 ) {
    case 常量表达式1 :
        //执行语句
        break; //跳出switch语句
    case 常量表达式2 :
        //执行语句
        break; //跳出switch语句
    ...
    default : /* 可不写 */
        //默认执行语句 当表达式不满足上面所有ease条件时执行
}

2. 循环语句

  • for语句、while语句、do...while语句。
  • 另外还支持for...of、forEach、every和some循环。

代码演示如下:

//for语句
for(表达式1; 表达式2; 表达式3){
      //循环体代码
}

//while语句
while( 循环条件式 ){
    //循环体
}

//do...while语句
do{
    //循环体
}while( 循环条件表达式 )

//for...of语句 是for的简写 返回被迭代对象的属性的值
let arr = [1, "hello", true]
for (let a of arr) {
  console.log("arr的值为: ", a)
}
/*输出结果如下:
arr的值为:  1
arr的值为:  hello
arr的值为:  true
*/

forEach、every和some是JS的循环语法,它们更像是可迭代对象的方法

代码演示如下:

//forEach语法
const arr = ['a', 'b', 'c']
arr.forEach(a => console.log(a))
arr.forEach((value, index, array) => {
  // value 代表当前值
  // index 代表下标
  // array代表数组本身
})
//every语法
let list = [100,200,300]
list.every((value,index,array) => {
  // value 代表当前值
  // index 代表下标
  // array代表数组本身
  return r // 返回true继续,返回false退出循环
           // 在循环过程中一旦执行返回false循环停止
})
//some语法
let list = [100,200,300]
list.some((value,index,array) => {
  // value 代表当前值
  // index 代表下标
  // array代表数组本身
  return r // 在循环过程中一旦执行返回true则循环停止
})

3. 跳转语句

  • break语句

当在循环体内执行到break语句时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。如果循环有嵌套关系,break语句停止的是其所在的当前层循环。

  • continue语句
    • 当在循环体内执行到continue语句时,他不是终止循环,而是会跳过当前循环体中的剩余代码,执行当前循环的下一轮循环。
    • 对于for循环,continue语句执行后,会跳转到其第3个表达式。
    • 对于while和do...while语句,continue语句执行后,会跳转到执行循环的判断条件。

函数

1. 一般函数

  • 定义:
//定义函数
function 函数名(行参) {
  函数体
  return 返回结果
}		/* 参数 和 返回结果 均可省略*/
//调用函数
函数名(实参)
  • 函数调用格式:
函数名( 实际参数 )
  • 函数定义时,可以定义可选参数:

function 函数名(参数1: 类型1, 可选参数?: 类型) {
  函数体
}
  • 函数定义时,可以设置参数的默认值
  • 定义函数时,参数不能同时设置为可选参数和默认值参数
  • 在定义函数时,还可以定义剩余参数,剩余参数是针对函数参数个数不确定数量的情况时,剩余参数语法允许将一个不确定数量的参数作为一个数组传入。

代码演示如下:

function getSum(...nums: number[]) { //带有剩余参数
  let sum: number = 0
  for (let i = 0; i < nums.length; i++) {
    sum += nums[i]
  }
  console.log("sum=%d", sum)
}

getSum(1, 2, 3)//可以传入任意多个number类型参数
getSum(1, 2, 3, 4, 5, 6, 7, 8, 9)

2. 箭头函数

箭头函数的箭头(=>)前相当于函数头说明,箭头(=>)后相当于函数体。

  • 箭头函数是一种特殊的匿名函数,其箭头表达式形式比较简洁。

示例代码如下:

let f = (x: number) => 10 + x
//表示给参数x,执行箭头(=>)后面的语句
f(5) //调用函数f,得到15
  • 当执行的表达式比较多时,可以使用 {} 括起来。

示例代码如下:

let f = (x: number) => {
  x = 10 + x
  return x + 20
}
f(5) //调用函数f,得到35
  • 在无参情况下,可以使用空括号。
let show = () =>{ console.log("Hello")}
show()

3. 异步函数

  • 异步函数是函数被调用时不阻塞后续代码执行,异步编程允许并发执行多个任务,以提高执行效率,可以通过 async 关键字定义异步函数。

示例代码如下:

//定义异步函数
async function asyncFun() {
  await setTimeout(() => {
  }, 1000) //耗时一秒
  console.log('异步函数中输出内容')
  return '调用异步函数的返回值'
}
 
//调用异步函数,下面一行调用在后面的输出之前
asyncFun()

//异步函数调用后的代码,上一行调用了异步函数
console.log('后面执行的代码输出语句,先输出')
  • 异步函数,什么时候返回是不确定的。
  • 当需要等到被调用的异步函数执行完毕后再继续调用后的代码时,可以使用 await 关键字,即等待。上面代码中的setTimeout()也是一个异步函数,因此其后面的输出会延迟1秒.await关键字只能用在async声明的异步函数内部。
  • 异步函数一般返回的是Promise对象,使用异步函数返回的结果需要在then中进行
//调用异步函数
let s = asyncFun()
s.then(value => { //得到异步返回结果后执行
  console.log(value)
})

//异步函数调用后的代码
console.log('后面执行的代码输出语句,先输出')

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐