运算符拓展

指数运算符

(即:**) 右结合,多个指数运算符连用时,是从最右边开始计算

链判断运算符

ES2020 引入了“链判断运算符” 判断对象是否存在

短路机制 ?.运算符相当于一种短路机制,只要不满足条件,就不再往下执行
括号的影响 如果有圆括号包裹,只对圆括号颞部产生影响 (即(a?.b).c)
右侧不得为十进制数值 (即:foo?.3:0 会被解析成三元运算符进行处理)

1. obj?.prop // 对象属性是否存在
2. obj?.[expr] // 同上
3. func?.(...args) // 函数或对象方法是否存在

Null 判断运算符

 ES2020  Null 判断运算符?? 只有运算符左侧的值为null或undefined时,才会返回右侧的值 (即:user.name ?? 'zhangsan')

逻辑赋值运算符

ES2021 引入 三个运算符||=、&&=、??=相当于先进行逻辑运算,然后根据运算结果,再视情况进行赋值运算。

1. x ||= y == x || (x = y)
2. x &&= y == x && (x = y)
3. x ??= y == x ?? (x = y)

你可能感兴趣的:(运算符拓展)