一、指数运算符
指数运算符(**
),该运算符是右结合,可与等号相结合(**=
)
// 相当于 2 ** (3 ** 2),
2 ** 3 ** 2
// 2^(3^2) = 512
//**=
let a = 1.5;
a **= 2;
// 等同于 a = a * a;
二、链判断运算符
链判断运算符(?.
),用于判断对象属性是否存在,简化了安全判断的过程
//安全判断
const firstName = (message
&& message.body
&& message.body.user
&& message.body.user.firstName) || 'default';
//链判断运算符
const firstName = message?.body?.user?.firstName || 'default';
三、Null判断运算符
Null判断运算符(??
),该运算符常用于设置默认值和判断函数的参数是否赋值,在设置默认值时只有运算符左侧的值为null或undefined时,才会返回右侧的值
//设置默认值
const headerText = response.settings.headerText ?? 'Hello, world!';
//判断函数的参数是否赋值
function Component(props) {
const enable = props.enabled ?? true;
// …
}
||
运算符:属性的值如果为nul
、undefined
、空字符串、false
或0,默认值也会生效
四、逻辑赋值运算符
将逻辑运算符与赋值运算符进行结合,主要用于设置默认值
function example(opts) {
opts.foo ??= 'bar';
opts.baz ??= 'qux';
}