繁体   English   中英

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

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

大约9个月前,我开始在一家新公司里工作,并在JS中不断遇到这种情况。 它有效,并且我一直在使用它来与以前的开发人员编写代码的方式保持一致,但是我不完全知道它的作用。 我曾尝试使用Google搜索,但不确定要搜索的内容。

!options && (options = {})

在我看来,这是一种三元条件,但我不太确定。

一个更好的例子是:

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

init();

该代码等效于:

if(!options)
  options = {};

这是运算符短路的一个示例:仅当第一个表达式( !options )为true时,才对第二个表达式( options = {} )求值,因为如果第一个表达式为false,则整个&&语句将自动假。

特别是在使用“ and”( && )和“ or”( || )运算符时,会发生这种情况。

MDN的页面对此进行了详细描述。

如果没有给出值,这是将options初始化为{}的一种方式。

第一个!options表示“选项是虚假的 ”。

因此,如果optionsnullundefined等,它将继续通过&&语句并设置options = {}初始化。

可以这样写,这更加清楚:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM