ES6运算符的扩展

一、指数运算符

指数运算符(**),该运算符是右结合,可与等号相结合(**=)

// 相当于 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;
  // …
}

||运算符:属性的值如果为nulundefined、空字符串、false或0,默认值也会生效

四、逻辑赋值运算符

将逻辑运算符与赋值运算符进行结合,主要用于设置默认值

function example(opts) {
  opts.foo ??= 'bar';
  opts.baz ??= 'qux';
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容