java中的?
1个回答
展开全部
?. 表示可选链,就是如果对象存在,就获取.后面的属性值。
举个例子,假定对象obj未定义(或者说不存在),那么下面的语句会报错:
let type = obj.type;
而改成这样就不报错了:
let type = obj?.type;
当obj不存在时,变量type的值为undefined。
?? 则是空值合并运算符,就是如果??左边的表达式是null或undefined,则获取??右边的表达式的值。
比如
let type = x ?? 'haha';
意思就是如果x是空值,则type='haha',否则type=x
以上两种合起来用的话,比如
let type = obj?.type ?? '';
意思就是,如果obj存在,且obj.type不是null或undefined,则type=obj.type,否则的话type就赋值为空字符串。
如果用常规写法,那么代码就复杂得多:
if (obj && obj.type) {
let type = obj.type;
}else{
let type = '';
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询