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

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

相关推荐
2401_894915532 小时前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
Profile排查笔记8 小时前
指纹浏览器哪个好?从 Profile、代理、权限和自动化能力判断是否适合
前端·人工智能·后端·自动化
lzhdim8 小时前
12、JavaScript常见的内存泄露问题 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
denggun123458 小时前
yield
前端·数据库·python
前端snow8 小时前
ai agent -- prompt汇总
前端
红尘散仙9 小时前
TypeScript WIT Guest:类型约束与 ComponentizeJS 工程化
rust·typescript·webassembly
红尘散仙9 小时前
从 dsh 的插件系统出发:为什么我要探索 WIT 与 Wasm Component Model
rust·typescript·webassembly
红尘散仙9 小时前
从 WIT 到 Wasmtime:构建 Rust Component 工程
rust·typescript·webassembly
muddjsv10 小时前
前端性能优化实战:从加载到渲染的全面提速指南
前端·性能优化
deli00700710 小时前
JSON 树形查看器:粘贴即解析,折叠展开一目了然
前端·数据库·json·ai编程