Javascript - 有人可以向我解释这到底是什么吗?

问题描述:

现在大约9个月前,我开始在一家新公司工作,并继续在JS中接受这个问题。它的工作原理和我一直在使用它来保持以前开发人员编写代码的方式,但我不完全知道它的作用。我尝试过使用Google搜索,但不确定要搜索的内容。Javascript - 有人可以向我解释这到底是什么吗?

!options && (options = {})

对我来说,那感觉就像是一种三元条件的,但我也不太清楚。

这方面的一个较好的例子是:

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

init(); 
+0

如果'options'是truthy(存在)没有任何反应。如果它是假的(不存在),'options'被创建为一个空对象。 – Li357

+0

它只是创建选项对象,如果它不存在并分配它。 –

+3

这相当于'options = options || {};' – gurvinder372

代码等同于:

if(!options) 
    options = {}; 

这是操作者短路的一个示例:第二个表达式(options = {})仅将如果第一个表达式(!options)为真,则评估是否为真,因为如果第一个表达式为假,则整个&&-表述将自动为假。

当使用“和”(&&)和“或”(||)运算符时,会发生这种情况。

MDN有this page更详细地描述了这一点。

+1

这真棒,非常感谢回答这个家伙!我认为这是一个简单的条件声明,但'&&'投掷我完全离开:-) – ChronixPsyc

这是一种初始化options{}如果没有给定值的方法。

第一个检查!options表示“选项是falsy”。

所以,如果optionsnullundefined,等等,都将继续通过&&声明并设置options = {},初始化它。

它可以写成这样,这是更清晰:

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