这些称为逻辑赋值运算符,总共有 3 个:逻辑与赋值( &&=)逻辑或赋值( ||=)逻辑空赋值( ??=)从根本上来说,它们的作用都是相同的:as前面的逻辑运算符&&,??和可以重写为。它们的唯一目的是替换更冗长的代码:||=x logical-operator= yx logical-operator (x = y)x &&= y如果 x不为真,则不执行任何操作;如果 x 为真,则将 x 的值更改为 y 。它等同于:if (x) {
x = y
}x ||= y如果 x 为真,则不执行任何操作;如果 x不为真,则将 x 的值更改为 y 。它等同于:if (!x) {
x = y
}x ??= y如果 x 不为null ,则不执行任何操作;如果 x 为null,则将 x 的值更改为 y 。它等同于:if (x === null || x === undefined) {
x = y
}以下是一些示例,可帮助您加深对这些内容的理解:const y = 'other value'let def = 'initial' // truthy valuelet zero = 0 // not truth valuelet undef = undefined // nullish valuedef &&= y // def = 'other value'zero &&= y // zero = 0undef &&= y // undef = 'undefined'def ||= y // def = 'initial'zero ||= y // zero = 'other value'undef ||= y // undef = 'other value'def ??= y // def = 'initial'zero ??= y // zero = 0undef ??= y // undef = 'other value'