可选链?.的使用

Why?

解决数据可能为null带来的错误同时避免重复代码
当访问一个深层树形结构的对象的时候,需要判断中间节点树形是否存在
如果不判断会出现eg: TypeError: Cannot read properties of undefined (reading 'bio')

let obj01 = {name: 'test'}
console.log(obj01.info.bio)
Error: TypeError: Cannot read properties of undefined (reading 'bio')
// 传统解决方案
let bio = obj01.info && obj01.info.bio; // undefined
// 可选链可以避免重复代码
let bio = obj01.info?.bio; // undefined

使用 ?? 来解决对象具体某个值为null时添加默认值

const response = {
settings: {
nullValue: null,
height: 400,
animationDuration: 0,
headerText: '',
showSplashScreen: false
}
};
const undefinedValue = response.settings?.undefinedValue ?? 'some other default'; // result: 'some other default'
const nullValue = response.settings?.nullValue ?? 'some other default'; // result: 'some other default'
const headerText = response.settings?.headerText ?? 'Hello, world!'; // result: ''
const animationDuration = response.settings?.animationDuration ?? 300; // result: 0
const showSplashScreen = response.settings?.showSplashScreen ?? true; // result: false
posted @   Felix_Openmind  阅读(2)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示