JavaScript是一种动态类型、面向对象的编程语言,广泛应用于Web前端开发中。随着ES6(ECMAScript 2015)规范的发布,JavaScript在语言层面上增加了许多新特性和语法糖。其中,可选的链式调用(optional chaining)就是一个备受期待的功能,它大大简化了代码的书写,提高了代码的可读性。
什么是可选的链式调用?
在JavaScript开发中,我们经常需要对对象进行属性或方法的访问,通常使用点运算符.
来实现。例如:
-- -------------------- ---- ------- ----- ------ - - ----- ------- ---- --- -------- - ----- ---- ------ ------- ---- ---- --- - -- ----- ---- - -------------------- -- ---- -----
但是,如果person对象中没有address属性,那么以上代码执行时就会抛出TypeError异常。为了避免这种情况,我们通常需要进行一些判断:
const city = person && person.address ? person.address.city : undefined;
这样虽然能解决问题,但是代码显得非常冗长,可读性较差。可选的链式调用就是为了解决这个问题而设计的。
可选的链式调用使用问号.
(?
)来替代点运算符.
,可以安全地访问对象的属性或方法,例如:
const city = person?.address?.city;
这样,如果person对象中没有address属性,代码也不会抛出异常,而是返回undefined。
可选的链式调用支持的操作符
可选的链式调用不仅支持点运算符.
,还支持其他一些常见的操作符,如下所示:
?.
可选的属性访问(Optional Property Access)?.()
可选的函数调用(Optional Call)?.[]
可选的数组访问(Optional Element Access)
因此,我们可以使用可选的链式调用来访问嵌套对象的属性或方法,例如:
-- -------------------- ---- ------- ----- ------ - - ----- ------- ---- --- -------- - ----- ---- ------ ------- ---- ---- ---- ---------------- - ------ ---------------- -------------- - - -- ----- ----------- - ------------------------------------ -- ---- ---- --- --- -----
上述代码中,如果getFullAddress方法不存在,代码也不会抛出异常,而是返回undefined。
支持的 JavaScript 引擎
可选的链式调用目前已经被加入到了ECMAScript 标准中,并且在最新版本的Chrome、Firefox、Safari和Edge浏览器中得到了支持。然而,低版本的浏览器和一些遗留的JavaScript引擎可能不支持这个功能。因此,在使用可选的链式调用时需要注意兼容性问题。
总结
可选的链式调用是一种简洁、安全、易读的JavaScript语法糖,可以避免在访问对象属性或方法时出现TypeError异常。目前,各大主流浏览器已经支持了这个功能,前端开发者可以放心地使用它来提高代码的可读性和简洁性。
示例代码
-- -------------------- ---- ------- ----- ---- - - ----- -------- ------ -------------------- ------------ - ------ ------- --------- - -------- ----- ---------- ---- - -- -------------------- - ------ ------------------------------------ - -- --------------------------------------- -- ---- ------ ----------------- --------------------------------------- -- ---------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/7020