链判断运算符和Null 判断运算符
2024-08-23 04:07:04
链判断运算符
如果我们要获取一个对象的深层嵌套属性,例如获取文章标题res.data.article.title
,然后为了安全起见,我们肯定不能直接这样获取,万一res
对象没有article
属性了呢,直接原地爆炸
// 不安全
const { title} = res.data.article
绝大多数情况下我是这样获取
// 安全
const title = res&&res.data&&res.res.data.article&&res.data.article.title || '默认标题'
如果嵌套层级不深的话还可以使用三目运算符,例如获取res.account
const account = res ? res.account : '柏成'
上面的写法稍微有些臃肿,如果使用链判断运算符?.
可以稍稍简化些代码,是不是变得更优雅...
const title = res?.data?.article?.title || '默认标题'
const account = res?.account || '默认账号'
Null判断运算符
对于res?.data?.article?.title || '默认标题'
来说,我们通过逻辑或运算符||
指定了默认值,我们可能想的是属性title
为undefined
或null
时启用默认值,但是呢,title
属性为''
、false
、0
、NaN
时,默认值也会生效,这就背离了我们的开发初衷
如果使用Null判断运算符??
的话,就解决了这样的问题,只有仅当??
左侧为undefined
或null
才会启用默认值
const title = res?.data?.article?.title ?? '默认标题'
const account = res?.account ?? '默认账号'
需要注意的是,??
和&&
、||
一起使用的时候,必须用小括号表明优先级,否则会报错。
// 报错
title && account ?? '默认标题'
title || account ?? '默认标题'
// 不报错
(title && account) ?? '默认标题'
(title || account) ?? '默认标题'
最新文章
- js判断数据类型
- How to create a batch of VMs with PowerShell
- Linux下WebSphereV8.5.5.0 安装详细过程
- Mac OSX 无法SSH远程的原因
- ubuntu下常用服务器的构建
- [转] 編程風格要素-The Elements of Programming Style 中文英文中英對照
- 搭建Spring + SpringMVC + Mybatis框架之二(整合Spring和Mybatis)
- C# 之 HttpWebRequest类
- 命令行创建Android应用,生成签名,对APK包签名并编译运行
- SharePoint SiteCollection Administrator
- BAE 环境下配置 struts2 + spring + hibernate(SSH)(二)struts2
- Android 单指触控拖拽,两指触控缩放
- OS X 键盘快捷键
- 391.FANUC宏程序编程
- 使用Spring MVC测试Spring Security Oauth2 API
- Navicat Premium连接各种数据库
- 标准库 svc—程序及服务控制
- Java内存模型简析
- Android下移植tcpflow
- 实现全站 HTTPS ,为什么国内网站总是那么slow&;&;low呀!
热门文章
- python 与 百度人脸识别api
- 关于vm.min_free_kbytes的合理设置推测
- 莫小安 Linux下Redis的安装与配置
- [原题复现]SUCTF 2019 WEB EasySQL(堆叠注入)
- 看阿里P7讲MyBatis:从MyBatis的理解以及配置和实现全帮你搞懂
- FLstudio 系列教程(六):如何安装FL studio
- SQL相关子查询是什么?和嵌套子查询有什么区别?
- jmeter脚本的编写
- k8S 搭建集群
- 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计