可选链操作符
MDN: 可选链操作符(
?.
)允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?.
操作符的功能类似于.
链式操作符,不同之处在于,在引用为空(nullish ) (null
或者undefined
) 的情况下不会引起错误,该表达式短路返回值是undefined
。与函数调用一起使用时,如果给定的函数不存在,则返回undefined
。当尝试访问可能不存在的对象属性时,可选链操作符将会使表达式更短、更简明。在探索一个对象的内容时,如果不能确定哪些属性必定存在,可选链操作符也是很有帮助的。
-
与对象
通过连接的对象的引用或函数可能是
undefined
或null
时,可选链操作符提供了一种方法来简化被连接对象的值访问。不使用可选链 let a = obj.first && obj.first.second 使用可选链 let a = obj.first?.second
-
与函数
函数调用时如果被调用的方法不存在,使用可选链可以使表达式自动返回
undefined
而不是抛出一个异常。let result = Foo.foo?.();
-
与表达式
当使用方括号与属性名的形式来访问属性时,你也可以使用可选链操作符:
let nestedProp = obj?.['prop' + 'Name'];
-
与赋值
可选链不能用于赋值
let object = {}; object?.property = 1; // Uncaught SyntaxError: Invalid left-hand side in assignment
-
与数组
let arrayItem = arr?.[42];
-
与空值合并操作符
空值合并操作符
可以在使用可选链时设置一个默认值:let customer = { name: "Carl", details: { age: 82 } }; let customerCity = customer?.city ?? "暗之城"; console.log(customerCity); // “暗之城”
来源: [MDN](Web 开发技术 | MDN (mozilla.org))
本文来自博客园,作者:MerLin97,转载请注明原文链接:https://www.cnblogs.com/merlin97/p/15578195.html