这个JS语法是什么?表达中的作业?(x!= null &&(y = x))

Der*_*rek 5 javascript syntax conditional

我正在使用这个JS插件,我遇到了一些我以前从未见过的语法.我理解它在做什么,但我不确定它为什么会起作用.

以下是其中一个实例的示例:

settings.maxId != null && (params.max_id = settings.maxId);
Run Code Online (Sandbox Code Playgroud)

这只是利用条件和单=?这是JS的常用语法吗?

小智 15

在JavaScript中,=运算符是表达式并评估指定的值.因为它是一个表达式,所以即使它引起副作用,也可以在允许表达的任何地方使用.从而:

settings.maxId != null && (params.max_id = settings.maxId)
Run Code Online (Sandbox Code Playgroud)

意味着:如果settings.maxId不为null那么(并且只有那时,因为&&短路)评估right-expression(params.max_id = settings.maxId),这反过来导致settings.maxId赋值的值params.max_id.这更明确地写为:

if (settings.maxId != null) {
  params.max_id = settings.maxId
}
Run Code Online (Sandbox Code Playgroud)

快乐的编码.