Javascript - 有人可以向我解释一下这是做什么的吗?

Javascript - Can someone explain to me exactly what this does?

我大约 9 个月前开始在一家新公司工作,并不断在 JS 中遇到这个问题。它有效,我一直在使用它来与以前的开发人员编写代码的方式保持一致,但我不完全知道它的作用。我试过用谷歌搜索它,但不确定要搜索什么。

!options && (options = {})

对我来说,感觉像是一种三元条件,但我不太确定。

一个更好的例子是:

function init(options) {
  !options && (options = {});
}

init();

代码等同于:

if(!options)
  options = {};

这是一个运算符短路的例子:只有当第一个表达式(!options)为真时,第二个表达式(options = {})才会被计算,因为如果第一个表达式为假,整个 && 语句将自动为假。

这在使用 "and" (&&) 和 "or" (||) 运算符时会发生。

MDN this page 对此进行了更详细的描述。

这是一种将 options 初始化为 {} 的方法,如果没有给它赋值的话。

第一个检查,!options,意思是"options is falsy"。

因此,如果 optionsnullundefined 等,它将继续执行 && 语句并设置 options = {},并对其进行初始化。

可以这样写,更清晰:

if (!options) {
    options = {};
}