鸿蒙开发04-ArkTS基础(二)
一 运算符
在 ArkTS 里,运算符是用于执行各种操作的符号,可分为算术运算符、比较运算符、逻辑运算符、赋值运算符等。下面为你详细介绍各类运算符。
1.1 赋值运算符
赋值运算符=,使用方式如x=y。
复合赋值运算符将赋值与运算符组合在一起,其中x op = y等于x = x op y。
复合赋值运算符列举如下:+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、|=、^=。
1.2 算术运算符
一元运算符为-、+、–、++。
二元运算符列举如下:+、-、*、/、%
1.3 比较运算符
比较运算符用于比较两个值,返回布尔类型(true 或 false)的结果。
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 相等(值相等即可) | let isEqual = 5 == ‘5’; // 结果为 true |
| === | 严格相等(值和类型都要相等) | let isStrictEqual = 5 === ‘5’; // 结果为 false |
| != | 不相等(值不相等) | let isNotEqual = 5 != 3; // 结果为 true |
| !== | 严格不相等(值或类型不相等) | let isStrictNotEqual = 5 !== ‘5’; // 结果为 true |
| > | 大于 | let isGreater = 5 > 3; // 结果为 true |
| < | 小于 | let isLess = 5 < 3; // 结果为 false |
| >= | 大于等于 | let isGreaterOrEqual = 5 >= 5; // 结果为 true |
| <= | 小于等于 | let isLessOrEqual = 5 <= 3; // 结果为 false |
1.4 逻辑运算符
逻辑与&&、逻辑或||、逻辑非!
1.5 位运算符
| 运算符 | 说明 |
|---|---|
| a & b | 按位与:如果两个操作数的对应位都为1,则将这个位设置为1,否则设置为0。let result = 5 & 3; // 二进制 101 & 011 结果为 001,即 1 |
| a I b | 按位或:如果两个操作数的相应位中至少有一个为1,则将这个位设置为1,否则设置为0。 |
| a ^ b | 按位异或:如果两个操作数的对应位不同,则将这个位设置为1,否则设置为0。let result = 5 ^ 3; // 二进制 101 ^ 011 结果为 110,即 6 |
| ~ a | 按位非:反转操作数的位。let result = ~5; // 二进制取反,结果为 -6 |
| a << b | 左移:将a的二进制表示向左移b位。let result = 5 << 1; // 二进制 101 左移一位为 1010,即 10 |
| a >> b | 算术右移:将a的二进制表示向右移b位,带符号扩展。let result = 5 >> 1; // 二进制 101 右移一位为 010,即 2 |
| a >>> b | 逻辑右移:将a的二进制表示向右移b位,左边补0。let result = -5 >>> 1; // 处理负数时与 >> 有区别 |
1.6 条件(三元)运算符
条件运算符是一种简洁的条件判断方式,语法为 条件 ? 表达式1 : 表达式2。若条件为 true,则返回表达式 1 的值;若为 false,则返回表达式 2 的值。
let age = 18;
let isAdult = age >= 18 ? '是成年人' : '不是成年人';
console.log(isAdult); // 输出 '是成年人'
1.7 空值合并运算符
空值合并运算符 ?? 用于在左侧操作数为 null 或 undefined 时,返回右侧操作数的值。
let value = null;
let result = value ?? '默认值';
console.log(result); // 输出 '默认值'
1.8 可选链运算符
可选链运算符 ?. 允许在访问对象属性或方法时,若对象为 null 或 undefined,则直接返回 undefined,避免出现错误。
let person = {
name: 'Alice',
address: {
city: 'New York'
}
};
let city = person?.address?.city;
console.log(city); // 输出 'New York'
let person2 = null;
let city2 = person2?.address?.city;
console.log(city2); // 输出 undefined
二 语句
2.1 条件语句
ArkTS 支持 if-else 和 switch 条件语句。
if-else:依据条件执行不同的代码块。
let age: number = 20;
if (age >= 18) {
console.log('成年人');
} else {
console.log('未成年人');
}
switch:针对不同的情况执行不同的代码块。
let day: number = 3;
switch (day) {
case 1:
console.log('星期一');
break;
case 2:
console.log('星期二');
break;
default:
console.log('其他日期');
}
2.2 循环语句
ArkTS 提供了 for、For-of、while 和 do-while 循环语句。
for:适用于已知循环次数的情况。
for (let i = 0; i < 5; i++) {
console.log(i);
}
For-of:使用for-of语句可遍历数组或字符串。示例如下:
for (forVar of expression) {
statements
}
for (let ch of 'a string object') {
/* process ch */
}
while:在条件为真时持续执行循环体。
let j = 0;
while (j < 5) {
console.log(j);
j++;
}
do-while:至少执行一次循环体,然后再检查条件。
let k = 0;
do {
console.log(k);
k++;
} while (k < 5);
2.3 其他语句
Break语句
使用break语句可以终止循环语句或switch。
Continue语句
continue语句会停止当前循环迭代的执行,并将控制传递给下一个迭代。
Throw和Try语句
throw语句用于抛出异常或错误:throw new Error('this error')
try语句用于捕获和处理异常或错误:typescript try { // 可能发生异常的语句块 } catch (e) { // 异常处理 }
下面的示例中throw和try语句用于处理除数为0的错误:
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');
}
}
支持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}'`);
}
}
}
2.4 函数声明语句
在 ArkTS 中,可使用 function 关键字声明函数。
function add(a: number, b: number): number {
return a + b;
}
let result = add(3, 5);
2.5 类和继承语句
ArkTS 支持面向对象编程,能够使用 class 关键字定义类,使用 extends 关键字实现继承。
class Animal {
constructor(public name: string) {}
speak() {
console.log(`${this.name} 发出声音`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} 汪汪叫`);
}
}
let dog = new Dog('旺财');
dog.speak();
2.6 模块导入和导出语句
在 ArkTS 里,可以使用 import 和 export 语句来处理模块。
导出模块:
// utils.ts
export function multiply(a: number, b: number): number {
return a * b;
}
导入模块:
// main.ts
import { multiply } from './utils';
let product = multiply(2, 3);
2.7 异步语句
ArkTS 支持 async/await 语法来处理异步操作。
function fetchData(): Promise<string> {
return new Promise((resolve) => {
setTimeout(() => {
resolve('数据已获取');
}, 1000);
});
}
async function main() {
let data = await fetchData();
console.log(data);
}
main();
更多推荐



所有评论(0)