ArkTS中的逻辑运算符

作者:犯困乐 发布时间: 2025-12-02 阅读量:28 评论数:0

概括

image-YIPT.png

1. 逻辑与(&&

  • 作用:两边表达式都为 true 时,结果才为 true;否则为 false

  • 短路特性:如果左边表达式为 false,右边表达式不会执行

typescript

运行

let a: boolean = true;
let b: boolean = false;
console.log(a && b); // 输出:false

let x: number = 1;
console.log(b && (x++ > 0)); // 左边为false,右边不执行,x仍为1

2. 逻辑或(||

  • 作用:两边表达式有一个为 true 时,结果就为 true;否则为 false

  • 短路特性:如果左边表达式为 true,右边表达式不会执行

typescript

运行

console.log(a || b); // 输出:true

let y: number = 1;
console.log(a || (y++ > 0)); // 左边为true,右边不执行,y仍为1

3. 逻辑非(!

  • 作用:对表达式取反,truefalsefalsetrue

typescript

运行

console.log(!a); // 输出:false
console.log(!b); // 输出:true

4. 空值合并运算符(??

  • 作用:属于逻辑运算符的扩展,专门处理 null/undefined,左边为 nullundefined 时返回右边值,否则返回左边值。

  • 短路特性:左边非空时,右边表达式不会执行

typescript

运行

let c: number | null = null;
let d: number = 5;
console.log(c ?? d); // 输出:5(c为null)

let e: number = 3;
console.log(e ?? d); // 输出:3(e非空)

5. 可选链与逻辑运算结合(?.

  • 虽然 ?. 是可选链运算符,但常与逻辑运算结合,避免访问 null/undefined 的属性导致错误:

typescript

运行

let obj: { name?: string } = {};
console.log(obj.name?.length > 0 || false); // 输出:false

注意事项

  • 逻辑运算符的优先级:! > && > ||,复杂表达式建议用括号明确优先级。

  • &&|| 返回的是实际表达式的值,而非严格布尔值(但可隐式转换为布尔值):

typescript

运行

console.log(0 && 5); // 输出:0(左边为false,直接返回0)
console.log(5 || 0); // 输出:5(左边为true,直接返回5)

评论