控制语句
原创大约 2 分钟
条件分支
和大多数语言一样,ArkTS也有两种条件语句:if
和switch
。
// 当s1为非空字符串时为true,而空字符串则为false
let s1 = "";
// 对boolean以外的类型进行判断时,会进行隐式类型转换
// 输出2
if (s1) {
console.log(1);
} else if (true) {
console.log(2);
} else {
console.log(3);
}
// 输出2
switch ("c") {
case "a":
console.log(1);
// break可选
break;
case "b":
case "c":
console.log(2);
break;
// 默认语句,可省略
default:
console.log(3);
}
循环控制
// 传统for循环
for (let i = 0; i < length; i++) {
....
}
// for...in循环,k会依次被赋值为可迭代对象的值
for (let k in object) {
....
}
for (let ch in "a string") {
// 会报错,但仍输出字符串中每一个字符的键:"0"、"1"、"2"、"3"、"4"、"5"、"6"、"7"
console.log(ch);
}
// for...of循环,v会依次被赋值为可迭代对象的值
for (let v of object) {
....
}
for (let ch of "a string") {
// 输出字符串中每一个字符:"a"、" "、"s"、"t"、"r"、"i"、"n"、"g"
console.log(ch);
}
// every循环:测试数组中的所有元素是否通过测试,只有全部通过才返回
// 输出
/*
* 1, 0, [1, 2, 3]
* 2, 1, [1, 2, 3]
* 3, 2, [1, 2, 3]
*/
let arr = [1, 2, 3];
arr.every((v, i, arrs) => {
// v:当前值,i:当前下标,arrs:数组
console.log(v, i, arrs);
return true;
});
// some循环:测试数组中的所有元素是否通过测试,只要有一个通过就返回
// 输出
/*
* 1, 0, [1, 2, 3]
*/
let arr = [1, 2, 3];
arr.some((v, i, arrs) => {
console.log(v, i, arrs);
return true;
});
// foreach循环
let obj = {
key1: 'apple',
key2: 'pear',
key3: 'banana'
};
Object.keys(obj).forEach(key => {
let value = obj[key];
console.log(`${key} : ${value}`);
});
// while、do...while循环
// 只要condition为true,代码会重复执行
while (condition) {
....
}
do {
...
} while (condition)
异常处理
throw
语句用于抛出一个异常或错误对象(throw new Error("this error")
),而try
则用于捕获和处理异常。
下面的语句和Java简直一模一样。
function myfun(s: string) {
let error: Error | null = null;
// 捕获可能发生的异常
try {
console.log("processed: " + s);
throw new Error("this is an error.");
} catch (e) {
error = e as Error;
} finally {
if (error != null) {
console.log(`Error caught: input="${s}", message="${error.message}"`);
}
}
}
// 输出"Error caught: input='null', message='this is an error.'"
myfun("null");
其他语句
break
:可以终止当前循环语句或跳出当前逻辑判断;continue
:会停止当前循环,将控制传递给下一个迭代。
感谢支持
更多内容,请移步《超级个体》。