javascript中, '??'、'?.'表示什么意思呀?具体请看看下面的图片,谢谢

大哥们有没有人讲详细点的,我想讲解下,javascript中, '??'、'?.'表示什么意思呀?具体请看看下面的图片,谢谢
最新回答
七米海岸

2024-09-29 00:02:05

?. 表示可选链,就是如果对象存在,就获取.后面的属性值。

举个例子,假定对象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 = '';

}