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异常。可选链操作符的使用语法是“?.”,但是它只能用于访问属性,不能用于调用方法和访问数组的元素,也不能用于访问全局变量。