可选链运算符(?.)的使用

作用:读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。运算符的功能类似于 . 链式运算符,不同之处在于,在引用为空  (nill 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined

使用:

var obj = { a: 1, b: 0 };
console.log(obj.a, obj.b)
console.log(obj?.a) // 1
console.log(obj?.[b]) // 0
console.log(obj?.c) // undefined
console.log(obj?.b || '') // ""
console.log(obj?.b ?? '') // 0

具体场景:

1、使用ref调用vue组件函数,但组件v-if时,使用?.运算符可以进行代码简化;

2、多层对象(Object)嵌套时使用链式操作符(.)进行获取值时使用 ?. 可以确保获取的数据不会报错(Cannot read properties of undefined)

遇到的问题:

在一般情况下要设置默认值做法是 undefined || "xxx";

在可选链运算符时 应该使用 ?? 而不是 || 原因是  

console.log(obj?.b || '') // ""
console.log(obj?.b ?? '') // 0
在 || 的判断中 0会被转换为 false,输出后面的空字符串,所有需要使用 ??(空值合并运算符 null,undefined)
posted @   背壳前进的牛  阅读(535)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示