"?."(任务标记后的点)在JS中是什么意思



我偶然发现了"quot;另一个SO问题中的语法。类似这样的东西-

console.log(x?.y?.z);

它做什么?

这被称为可选链接。

它允许使用属性链接,而不必验证每个级别中的属性。它在不引发异常的情况下缩短了性能评估,从而避免了";无法读取未定义的"的X;错误

let o = {p: {q: 'foo'}};

try {
console.log('Trying to access the property x');
console.log(o.x.y);
}
catch(e) {
console.log('That was an error');
}

console.log('Trying to access the property x with Optional Chaining');
console.log(o?.x?.y);


可选链接更多用例

使用函数调用

let result = someInterface.customMethod?.();

带有表达式

let nestedProp = obj?.['prop' + 'Name'];

使用数组元素

let arrayItem = arr?.[42];

ECMAScript草稿

相关内容

  • 没有找到相关文章

最新更新