运算符拓展

指数运算符

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

链判断运算符 【运算符拓展】ES2020 引入了“链判断运算符” 判断对象是否存在
短路机制 ?.运算符相当于一种短路机制,只要不满足条件,就不再往下执行 括号的影响 如果有圆括号包裹,只对圆括号颞部产生影响 (即(a?.b).c) 右侧不得为十进制数值 (即:foo?.3:0 会被解析成三元运算符进行处理)1. obj?.prop // 对象属性是否存在 2. obj?.[expr] // 同上 3. func?.(...args) // 函数或对象方法是否存在

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

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

    推荐阅读