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 @ 2022-08-03 11:05  蓓蕾心晴  阅读(132)  评论(0编辑  收藏  举报