ES6 和后续版本中的可选链(Optional Chaining)和空值合并(Nullish Coalescing)
可选链(Optional Chaining)?.
可选链运算符(?.
)允许你在尝试访问对象的某个属性时不必明确验证该对象是否存在。如果该对象不存在,表达式会短路,返回 undefined
。
基本用法:
javascript
const user = {
name: 'John',
address: {
street: '123 Main St',
},
};
// 普通方式
const street = user && user.address && user.address.street;
// 使用可选链
const streetWithOptionalChaining = user?.address?.street;
console.log(street); // 输出 "123 Main St"
console.log(streetWithOptionalChaining); // 输出 "123 Main St"
可选链也可以用于函数调用:
javascript
const result = someObject?.someMethod?.();
如果 someMethod
存在并且是一个函数,那么它会被调用;否则,result
会被赋值为 undefined
。
空值合并(Nullish Coalescing)??
空值合并运算符(??
)用于为变量设置默认值。当你希望仅在变量为 null
或 undefined
时使用默认值,而不是依赖于变量的所有假值(如 0
,''
,false
等),这个运算符会非常有用。
基本用法:
javascript
const value = null;
const defaultValue = 'Default Value';
const result = value ?? defaultValue;
console.log(result); // 输出 "Default Value"
结合使用
这两个运算符经常会被结合使用,以便更简洁地处理嵌套属性和设置默认值。
javascript
const user = {
name: 'John',
preferences: {
theme: 'Dark',
},
};
const theme = user?.preferences?.theme ?? 'Light';
console.log(theme); // 输出 "Dark"
在这个例子中,如果 user
或 preferences
为 null
或 undefined
,则 theme
将被设置为默认值 'Light'
。
这些是 ES6 和后续版本中可选链和空值合并的基本用法。这两个运算符都提供了一种更简洁、更安全的方式来处理 null
和 undefined
,从而让代码更加易读和可维护。希望这些信息能帮助你更好地理解和使用这些特性。