在JavaScript中,使用问号 ?
作为可选链(Optional Chaining)的操作符,其目的是为了安全地访问对象的深层属性,而不会因为对象链中的某个环节不存在(null
或 undefined
)而导致错误。
例如,考虑以下代码:
const res = {
data: { list: [1, 2, 3] }
};
const data = res.data?.list;
在这个例子中,res.data?.list
使用了可选链操作符 ?.
。如果 res.data
是 undefined
或 null
,那么 res.data.list
将不会尝试访问,并且整个表达式 res.data?.list
的值将是 undefined
,而不是抛出一个错误。
可选链操作符 ?.
后面可以跟属性访问(如上例中的 list
),也可以跟函数调用(例如 res.data?.getList()
),如果对象链中的某个环节不存在,那么函数调用将不会执行,并且表达式的结果将是 undefined
。
总结来说,加问号 ?
是为了实现可选链,它允许开发者在访问对象属性时不必显式检查每个中间对象是否存在,从而使得代码更加简洁和安全。