"无回报" - 带括号和无括号的分配之间的差异

Rom*_*man 0 javascript return parentheses ecmascript-6 eslint

没有回报的指派允许return语句中没有asignments.但默认情况下,当您将作业放在括号中时,它允许使用它.

有之间的差异的技术return (foo = 1 + 1)return foo = 1 + 1

我有这个问题因为我尝试了以下内容

return createMatrixRow(
  width,
  element,
  addWidth,
  elements.concat(addWidth ? Object.assign({}, element, (element.position.width = width)) : element)
)
Run Code Online (Sandbox Code Playgroud)

为了避免我element.position.width = width在括号中输入错误消息.

lla*_*ama 5

没有不同.在这两种情况下,它们形成单个表达式,除了使用parens之外,表达式是分组运算符,它接收原始赋值表达式并返回其结果.

使用parens手动覆盖可能看起来像错误的分配是一种相当常见的短语特征.

例如,这通常会使烧结物烦恼:

while (x = re.exec(data)) {
  // do work
}
Run Code Online (Sandbox Code Playgroud)

原因是作为一个条件的作业通常是一个错字,在那里==是有意的.

但这通常会满足它:

while ((x = re.exec(data))) {
  // do work
}
Run Code Online (Sandbox Code Playgroud)

否则多余的父母是一种说"是的,我知道这是一个任务,所以我将用这些不必要的parens包装来表明".