可选链操作符
可选链操作符(Optional Chaining Operator)是JavaScript ES2020引入的一个新特性,用于简化访问深层嵌套对象或数组时的代码书写。
在旧版JavaScript中,如果要访问一个嵌套对象中的属性或方法,需要使用多个.
或[]
运算符来访问。但是,如果这些属性或方法中的任何一个为null或undefined,就会导致TypeError错误。
可选链操作符?.
解决了这个问题。它允许我们使用单个.
运算符,直接访问深层嵌套对象中的属性或方法,同时避免了因为属性或方法为null或undefined而导致的TypeError错误。
例如,假设我们有一个名为person
的对象,其中包含一个名为address
的属性,address
属性包含一个名为city
的属性。我们可以使用可选链操作符来访问person.address.city
属性,如下所示:
const city = person?.address?.city;
在这里,如果person
或address
属性为null或undefined,则city
变量将被赋值为undefined,而不会抛出TypeError错误。
逻辑空值合并运算符
逻辑空值合并运算符(Nullish Coalescing Operator)是JavaScript ES2020引入的另一个新特性,用于判断一个表达式是否为null或undefined,并在表达式为null或undefined时返回一个默认值。
逻辑空值合并运算符使用双问号??
表示。它与传统的逻辑或运算符||
有所不同。逻辑或运算符在判断条件为假值(false、0、空字符串等)时会返回第一个真值,而逻辑空值合并运算符仅在判断条件为null或undefined时才返回默认值。
可以将逻辑空值合并运算符视为一种更严格的空值判断方式。
以下是逻辑空值合并运算符的使用示例:
const value = expressionA ?? expressionB;
如果expressionA
的值不为null或undefined,则value
变量将被赋值为expressionA
的值。否则,如果expressionA
的值为null或undefined,则value
变量将被赋值为expressionB
的值。
逻辑空值合并运算符的主要目的是提供一种简洁的方式来设置默认值,而不会受到其他假值(如0、空字符串等)的影响。