TypeScript 编程,|| 和 ?? 的区别是什么?

||(逻辑或运算符)

  • 作用:如果左侧操作数为"假值"(falsy),返回右侧操作数。
  • 假值(falsy)的定义:
    • false
    • 0
    • ''(空字符串)
    • null
    • undefined
    • NaN

示例:

typescript 复制代码
const a = 0 || 'default'; // 'default'
const b = false || 'default'; // 'default'
const c = '' || 'default'; // 'default'
const d = null || 'default'; // 'default'
const e = undefined || 'default'; // 'default'

const f = 'value' || 'default'; // 'value'
const g = 42 || 'default'; // 42

??(空值合并运算符)

  • 作用:如果左侧操作数为 nullundefined(其它假值除外),返回右侧操作数。

示例:

typescript 复制代码
const a = 0 ?? 'default'; // 0
const b = false ?? 'default'; // false
const c = '' ?? 'default'; // ''
const d = null ?? 'default'; // 'default'
const e = undefined ?? 'default'; // 'default'

const f = 'value' ?? 'default'; // 'value'
const g = 42 ?? 'default'; // 42

注意,?? 的优先级比 || 高。

相关推荐
慧一居士10 分钟前
vite.config.ts 配置使用说明,完整配置示例
前端
wusp199416 分钟前
nuxt3模块化API架构
前端·javascript·nuxt3
沛沛老爹21 分钟前
Web开发者进阶AI:企业级Agent Skills安全策略与合规架构实战
前端·人工智能·架构
遗憾随她而去.1 小时前
前端首屏加载时间的度量:FCP、LCP等指标的规范理解
前端
CDwenhuohuo1 小时前
安卓app巨坑 nvue后者页面要写画笔绘制功能nvue canvas
前端·javascript·vue.js
一只小bit1 小时前
Qt 事件:覆盖介绍、处理、各种类型及运用全详解
前端·c++·qt·cpp
人道领域1 小时前
JavaWeb从入门到进阶(前端工程化)
前端
shughui1 小时前
APP、Web、H5、iOS与Android的区别及关系
android·前端·ios
Amumu121381 小时前
React Router 6介绍
前端·react.js·前端框架
山峰哥2 小时前
SQL调优实战:让查询效率飙升10倍的降本密码
服务器·前端·数据库·sql·编辑器·深度优先