JS 问号?妙用

复制代码
// 1. ?
var obj ={a:1,b:2}
obj.c.a 
// 会报错:Uncaught TypeError: Cannot read properties of undefined,因为obj.c 不存在 
解决方法:
obj.c?.a 
// 等价于
obj.c && obj.c.a
// ?是可选链操作符,在引用为空null 或者 undefined 的情况下不会引起错误,该表达式短路返回值是 undefined
// 2. ??
// 空值合并运算符,在ES2020中新增,可以用来保证值不为 null 或者 undefined
var a1="";
var b1=a1??"default1" // ""
var a2=undefined;
var b2=a2??"default2" // default2
var a3=null;
var b3=a3??"default3" // default3

// 注:(??) 直接和 AND(&&)和 OR(||)一起用会报错,如果要一起用,记得单独给 ?? 左右表达式加括号,如:
b=(a??"dffdfdf") || 123 // dffdfdf
b=(a??"dffdfdf") && 123 // 123
// 3. 逻辑或(||)
// 空值合并运算符将跳过 null,undefined
// 逻辑或运算符会跳过 null,undefined,false
false ?? 'hello'    // false
false || 'hello'    // 'hello'
// 如果不想用要虚值,可以使用 ||。如果只想检查是否为 null 或 undefined,就用 ??
复制代码

 

 

 

posted @   蓓蕾心晴  阅读(153)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示