es6逻辑运算符

1. 可选链操作符(Optional Chaining Operator)

可选链操作符?.可以安全地访问嵌套对象的属性或方法,即使其中某个属性为nullundefined,也不会抛出错误,而是直接返回undefined

1
2
3
javascript复制代码let obj = { foo: { bar: 'baz' } };
let result = obj?.foo?.bar; // result: 'baz'
let result2 = obj?.foo?.baz; // result2: undefined

2. 空值合并操作符(Nullish Coalescing Operator)

空值合并操作符??用于在变量为nullundefined时提供一个默认值。

1
2
javascript复制代码let appSecret = null;
let result = appSecret ?? 'defaultSecret'; // result: 'defaultSecret'
  • 可选链操作符?.
  • 空值合并运算符?? 只处理null和undefined
  • 逻辑与赋值运算符 &&=
    • a = a && b
    • flag &&= someCondition();
  • 逻辑或赋值运算符 ||=
    • a = a || b
    • 用于初始化变量,如果变量未被初始化,使用 ||= 可以提供一个默认值
  • 逻辑空赋值运算符 ??=

场景-空值解构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
getVideoInfo: (params) => {
// 使用解构赋值从 params 中提取 channelNo,并将其余的属性放在 restParams 中
const { channelNo, ...restParams } = params;

// 如果 channelNo 存在,才将其添加到 params 中
const finalParams = {
...restParams,
...(channelNo ? { channelNo } : {}), // 如果 channelNo 存在,扩展进
};

return request({
url: '/api/cyy/device/v1/ys7/liveAddress',
method: 'POST',
params: finalParams,
});
}