LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

JavaScript 运算符

可选链运算符 [ ? ]

可选链接运算符(Optional Chaining Operator) 处于 ES2020 提案的第 4 阶段,因此应将其添加到规范中。它改变了访问对象内部属性的方式,尤其是深层嵌套的属性。它也可以作为 TypeScript 3.7 + 中的功能使用。

if (data && data.children && data.children[0] && data.children[0].title) {
    // I have a title!
}

上面的代码用于 API 响应,必须解析 JSON 以确保名称存在 。但是,当对象具有可选属性或某些配置对象具有某些值的动态映射时,可能会遇到类似情况,需要检查很多边界条件。 这时候,使用可选链接运算符,使用 “?” 要检查空值的属性之后的运算符。我们可以随意在表达式中多次使用该运算符,并且如果未定义任何项,它将尽早返回。

  • 对于静态属性使用方法

    object?.property
    
  • 对于动态属性使用方法

    object?.[expression] 
    
  • 对于方法调用使用方法

    object.runsOnlyIfMethodExists?.()
    

逻辑空分配 [ ??= ]

x ??= y

逻辑空值运算符仅在 nullish 值(null 或者undefined)时才将值分配给x

效果等同于

x ?? (x = y);

不等同于下面

x = x ?? y;

原因:  空的合并运算符(??)从左到右操作,如果 x 不为 nullish 值则中表达式不执行。因此,如果 x 不为null 或者 undefined,则永远不会对表达式y进行求值。如果y是一个函数,它将根本不会被调用。

逻辑或分配 [ ||= ]

此逻辑赋值运算符仅在左侧表达式为 falsy 值(虚值) 时才赋值。Falsy 值(虚值)与 null 有所不同,因为 falsy 值(虚值)可以是任何一种值:undefined,null,空字符串 (双引号 “”、单引号’’、反引号 ``),NaN,0。IE 浏览器中的 document.all,也算是一个。

x ||= y

效果等同于

x || (x = y)

逻辑与分配 [ &&= ]

此逻辑赋值运算符仅在左侧为真时才赋值

x &&= y

效果等同于

x && (x = y)
img_show