当前位置: 首页 > news >正文

JS之短路操作符

短路操作符(Short-circuit Operator)是 JavaScript 中的一个概念,这些操作符同样适用于 TypeScript,因为 TypeScript 是 JavaScript 的类型超集。短路操作符主要包括逻辑“与”(&&)和逻辑“或”(||),以及空值合并操作符(??),它们的行为在 JavaScript 和 TypeScript 中是一致的。
以前只认为与和或只能用来协助判断是ture还是false,即if(a || b)的用法,但是还可以有更多的用法,如协助赋值const a = false || 'Hello'a设置默认值的用法。

逻辑“与”(&&)操作符

逻辑“与”操作符会在左侧操作数为真值时才会执行右侧操作数,如果左侧操作数为假值(Falsy),则直接返回左侧操作数。

示例:

const a = true && 'Hello';  // 'Hello'
const b = false && 'Hello';  // false
const c = '' && 'Hello';     // ''
const d = 'Hello' && 'World'; // 'World'

第一个是false,直接返回第一个
第一个是true,返回第二个

逻辑“或”(||)操作符

逻辑“或”操作符会在左侧操作数为真值时直接返回左侧操作数;如果左侧操作数为假值,则返回右侧操作数。

示例:

const a = true || 'Hello';    // true
const b = false || 'Hello';   // 'Hello'
const c = '' || 'Hello';      // 'Hello'
const d = 'Hello' || 'World'; // 'Hello'

第一个是true,返回第一个
第一个是false,返回第二个
与 && 的逻辑相反

空值合并操作符(??

空值合并操作符用于在左侧操作数为 nullundefined 时返回右侧操作数,适用于更精准的默认值判断。

示例:

const a = null ?? 'Default';   // 'Default'
const b = undefined ?? 'Default';  // 'Default'
const c = '' ?? 'Default';    // ''
const d = 0 ?? 'Default';     // 0
const e = false ?? 'Default'; // false

|| 和 ?? 的区别

如果右侧是null、undefined,那么a和b的值是一样的(hello),但是如果是0、false、‘’、NaN,a会等于hello,b却是等于0、false、‘’、NaN

const b = '' || 'hello';  // 'hello'
const c = '' ?? 'hello'; // ''const b = NaN || 'hello'; // 'hello'
const c = NaN ?? 'hello'; // NaN

在 TypeScript 中的应用

由于 TypeScript 是 JavaScript 的超集,所有在 JavaScript 中的短路操作符同样适用于 TypeScript。这些操作符在处理变量初始化、参数默认值和条件渲染时非常有用。

示例:处理函数参数默认值

JavaScript 中:

function greet(name) {const userName = name || 'Guest';console.log(`Hello, ${userName}`);
}greet();  // Hello, Guest
greet('Alice');  // Hello, Alice

TypeScript 中:

function greet(name?: string) {const userName = name || 'Guest';console.log(`Hello, ${userName}`);
}greet();  // Hello, Guest
greet('Alice');  // Hello, Alice
示例:使用空值合并操作符

JavaScript 中:

const value = null ?? 'Default Value';
console.log(value);  // 'Default Value'

TypeScript 中:

const value: string | null = null;
const result = value ?? 'Default Value';
console.log(result);  // 'Default Value'

小结

短路操作符是 JavaScript 中的概念,并且在 TypeScript 中同样适用。这些操作符包括逻辑“与”(&&)、逻辑“或”(||)以及空值合并操作符(??),它们在处理默认值、变量初始化和条件逻辑时非常有用。TypeScript 通过类型系统进一步增强了这些操作符的应用,使得代码更加安全和可维护。

http://www.lryc.cn/news/400855.html

相关文章:

  • 【Linux】安装PHP扩展-redis
  • 内衣洗衣机怎么选?分享五款人气巅峰机型,选对不选贵
  • OpenMesh入门,安装,运行示例Hello World
  • std::env是什么库?|Python一对一教学答疑
  • Go语言--广播式并发聊天服务器
  • Spring MVC 全注解开发
  • MQTT——Mosquitto使用(Linux订阅者+Win发布者)
  • ArcGIS识别不GDB文件地理数据库显示为空?
  • uniapp微信小程序 TypeError: $refs[ref].push is not a function
  • Django任务管理
  • Hive 常见问题
  • 51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动大屏_硬件SPI4_参考代码(v1.3)
  • 实习随笔【前端技术实现全局添加水印】
  • 【软件测试】编写测试用例篇
  • 转型AI产品经理需要掌握的硬知识(二):AI常见概念和算法梳理
  • mysql-connector-java 8.0.33 反序列化漏洞
  • 基于Faster R-CNN的安全帽目标检测
  • linux中vim切换输入中文
  • 嵌入式C++、Qt/QML和MQTT:智能工厂设备监控系统的全流程介绍(附代码示例)
  • 监控易V7.6.6.15升级详解8:机房动环管理功能
  • C++ | Leetcode C++题解之第232题用栈实现队列
  • Git-Updates were rejected 解决
  • Java常用的API_02(正则表达式、爬虫)
  • 2024最新图纸加密软件Top5排行榜
  • 每日一练 - IEEE 802.1Q中STP协议
  • 设计模式--工厂设计模式
  • 消息队列-MQ
  • 近源渗透简介
  • 13 IP层协议-网际控制报文协议ICMP
  • 第一节Linux常见指令