js中可选链操作符(Optional Chaining Operator)的用法详解

分类:知识百科 日期: 点击:0

js中可选链操作符介绍

js中可选链操作符(Optional Chaining Operator)是ECMAScript 2020中新增的一个语法特性,它可以帮助我们更方便地访问嵌套对象的属性,并且可以避免抛出TypeError异常。

使用方法

可选链操作符的使用语法是“?.”,它的使用方法如下:

  • 如果对象的属性存在,则返回其属性值,例如:
                let obj = {
                    foo: {
                        bar: "bar"
                    }
                };
                let bar = obj?.foo?.bar; // bar
            
  • 如果对象的属性不存在,则返回undefined,例如:
                let obj = {
                    foo: {
                        bar: "bar"
                    }
                };
                let baz = obj?.foo?.baz; // undefined
            
  • 如果对象的属性不存在,则不会抛出TypeError异常,例如:
                let obj = {
                    foo: {
                        bar: "bar"
                    }
                };
                let baz = obj.foo.baz; // TypeError: Cannot read property 'baz' of undefined
            
  • 如果对象的属性存在,但是属性值为null,则返回null,例如:
                let obj = {
                    foo: {
                        bar: null
                    }
                };
                let bar = obj?.foo?.bar; // null
            

可选链操作符的注意事项

  • 可选链操作符只能用于访问属性,不能用于调用方法,例如:
                let obj = {
                    foo: {
                        bar() {
                            return "bar";
                        }
                    }
                };
                let bar = obj?.foo?.bar(); // SyntaxError: Unexpected token '('
            
  • 可选链操作符不能用于访问数组的元素,例如:
                let arr = [1, 2, 3];
                let first = arr?.[0]; // SyntaxError: Unexpected token '['
            
  • 可选链操作符只能用于访问对象的属性,不能用于访问全局变量,例如:
                let foo = "foo";
                let bar = foo?.bar; // SyntaxError: Unexpected token '.'
            

js中可选链操作符(Optional Chaining Operator)是ECMAScript 2020中新增的一个语法特性,它可以帮助我们更方便地访问嵌套对象的属性,并且可以避免抛出TypeError异常。可选链操作符的使用语法是“?.”,但是它只能用于访问属性,不能用于调用方法和访问数组的元素,也不能用于访问全局变量。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。