目录

语句

If语句

Switch语句

条件表达式

For语句

For-of语句

While语句

Do-while语句

Break语句

Continue语句

Throw和Try语句

课堂小练习


语句

If语句

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

else部分也可能包含if语句

if语句如下所示:

if (condition1) {
  // 语句1
} else if (condition2) {
  // 语句2
} else {
  // else语句
}

Switch语句

使用switch语句来执行与switch表达式值匹配的代码块。

switch语句如下所示:

switch (expression) {
  case label1: // 如果label1匹配,则执行
    // ...
    // 语句1
    // ...
    break; // 可省略
  case label2:
  case label3: // 如果label2或label3匹配,则执行
    // ...
    // 语句23
    // ...
    break; // 可省略
  default:
    // 默认语句
}

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

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

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

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

注意事项:

break语句:每个case分支通常以break语句结束,用于跳出switch结构。如果没有break,程序会继续执行下一个case分支,直到遇到break或switch语句结束。这种行为称为“贯穿”(fall-through),在某些情况下可能有用,但大多数情况下应该避免。

default分支:default分支是可选的,但推荐使用。它用于处理所有未匹配的情况,确保switch语句的完整性。

表达式的类型:switch语句的表达式可以是整数类型、枚举类型、字符类型或字符串类型。浮点数类型(如float、double)不能用作switch表达式。

条件表达式

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

示例如下:

// condition ? expression1 : expression2
let value = Math.random()
console.info(value.toString())
let isValid = value > 0.5 ? true : false;
let message = isValid ? 'Valid' : 'Failed';
console.info(message)

如果condition的为真值(转换后为true的值),则使用expression1作为该表达式的结果;否则,使用expression2。

For语句

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

for语句如下所示:

for ([init]; [condition]; [update]) {
  statements
}
let sum = 0;
for (let i = 0; i < 10; i += 2) {
  sum += i;
}

for语句的执行流程如下:

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

2、 计算condition。如果它为真值(转换后为true的值),则执行循环主体的语句。如果它为假值(转换后为false的值),则for循环终止。

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

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

5、 回到步骤2。

For-of语句

使用for-of语句可遍历数组或字符串。

示例如下:

for (forVar of expression) {
  statements
}
for (let ch of 'a string object') {
  /* process ch */
}

While语句

只要condition为真值(转换后为true的值),while语句就会执行statements语句。

示例如下:

while (condition) {
  statements
}

let n = 0;
let x = 0;
while (n < 3) {
  n++;
  x += n;
}

Do-while语句

如果condition的值为真值(转换后为true的值),那么statements语句会重复执行。

示例如下:

do {
  statements
} while (condition)
let i = 0;
do {
  i += 1;
} while (i < 10)

Break语句

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

示例:

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

let x = 0;
while (true) {
  x++;
  if (x > 5) {
    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;
}

Throw和Try语句

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

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

支持finally语句

// throw new Error('this error')
// try {
//   // 可能发生异常的语句块
// } catch (e) {
//   // 异常处理
// }

class ZeroDivisor extends Error {
}

function divide(a: number, b: number): number {
  if (b == 0) {
    throw new ZeroDivisor();
  }
  return a / b;
}

function process(a: number, b: number) {
  try {
    let res = divide(a, b);
    console.log('result: ' + res);
  } catch (x) {
    console.log('some error');
  }
}

process(2, 0)

课堂小练习

使用ArkTs语言编写一个方法,‌在方法中使用switch语句,‌调用方法能根据入参1-7分别打印出对应的星期几信息。‌

function printDayOfWeek(num: number) {
  switch (num) {
    case 1:
      console.log("Monday");
      break;
    case 2:
      console.log("Tuesday");
      break;
    case 3:
      console.log("Wednesday");
      break;
    case 4:
      console.log("Thursday");
      break;
    case 5:
      console.log("Friday");
      break;
    case 6:
      console.log("Saturday");
      break;
    case 7:
      console.log("Sunday");
      break;
    default:
      console.log("Invalid input. Please enter a number between 1 and 7.");
  }
}

//调用
printDayOfWeek(2);

使用do-while计算1到10相加的和

let sum = 0;
let i = 0
do {
  console.info(i.toString())
  i++;
  sum += i;
} while (i < 10);
console.info(sum.toString())

定义一个数组,包含1到5,5个数字。使用for/for-of进行遍历并在循环中打印出当前元素的值

let arr = [1, 2, 3, 4, 5];
for (let item of arr) {
  console.log(item.toString());
}
for (let i = 1; i <= arr.length; i++) {
  console.log("i:", i.toString());
}

Logo

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

更多推荐