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"。
因此,如果 options
是 null
、undefined
等,它将继续执行 &&
语句并设置 options = {}
,并对其进行初始化。
可以这样写,更清晰:
if (!options) {
options = {};
}
我大约 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"。
因此,如果 options
是 null
、undefined
等,它将继续执行 &&
语句并设置 options = {}
,并对其进行初始化。
可以这样写,更清晰:
if (!options) {
options = {};
}