ES6 中的可选链操作符使用方法

随着前端技术的不断升级,许多新的特性被加入到了 JavaScript 的语言中。ES6 中的可选链操作符是其中之一。可选链操作符 ?. 可以在对象的属性调用中进行安全的导航,当属性不存在时不会抛出异常。

基本使用方法

ES6 中的可选链操作符 ?. 可以在对象的属性调用中进行安全导航。使用可选链操作符 ?. 时,如果属性不存在,代码不会抛出异常。下面是一些使用可选链操作符的示例代码。

普通属性调用

在上面的代码中,当尝试访问 person.address.zipcode 时,代码会抛出一个 TypeError 异常,因为 person.addressundefined,它没有 zipcode 属性。为了避免这种情况,我们可以使用可选链操作符 ?.

在上面的代码中,使用可选链操作符 ?. 时,如果属性不存在,代码只会返回 undefined,不会抛出异常。这对于避免代码中出现大量的 if (obj && obj.prop1 && obj.prop1.prop2 && obj.prop1.prop2.prop3) 很有帮助。

函数调用

我们也可以在函数调用中使用可选链操作符 ?.。下面是一个示例代码:

在上面的代码中,如果尝试调用 person.sayHi(),代码只会返回 undefined,不会抛出异常。

高级用法

除了基本使用方法之外,ES6 中的可选链操作符还有一些高级用法,可以帮助我们更好地控制代码流程。

空值合并运算符

空值合并运算符 ?? 可以在可选链操作符的基础上进行更进一步的操作。空值合并运算符可以在操作符左侧的表达式为 nullundefined 时返回它的右侧值,否则返回左侧值。下面是一个示例代码:

在上面的代码中,使用空值合并运算符 ?? 可以避免出现 undefinednull 的情况。另外需要注意的是,如果使用逻辑或操作符 ||,当 person.addressnull 时,代码会抛出一个 TypeError 异常,因为 null 没有 city 属性。

数组调用

在数组调用中,同样可以使用可选链操作符 ?.。下面是一个使用可选链操作符 ?. 的示例代码:

在上面的代码中,使用可选链操作符 ?. 时,如果数组元素不存在,则代码只会返回 undefined,不会抛出异常。使用空值合并运算符 ??,可以避免出现 undefinednull 的情况。

总结

ES6 中的可选链操作符可以在对象的属性调用、函数调用和数组调用中进行安全导航,当属性不存在时不会抛出异常。除了基本使用方法之外,还可以使用空值合并运算符进行更进一步的操作。可选链操作符的使用方法可以帮助我们更好地控制代码流程,避免代码中出现大量的判断语句。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653eaf7a7d4982a6eb819b4f


纠错
反馈