为什么在JavaScript中返回时使用括号?

sil*_*der 32 javascript

在Restify框架代码中,我找到了这个函数:

function queryParser(options) {

    function parseQueryString(req, res, next) {
        // Some code goes there
        return (next());
    }
    return (parseQueryString);
}
Run Code Online (Sandbox Code Playgroud)

为什么作者会写return (next());return (parseQueryString);?它是否需要括号,如果是,为什么?

And*_*dru 83

如果要在多行编写return语句,则必须在返回时使用括号.

React.js提供了一个有用的例子 在render组件中属性的return语句中,为了便于阅读,您通常希望传播JSX,并返回多行,例如:

render: function() {
    return (
        <div className="foo">
            <h1>Headline</h1>
            <MyComponent data={this.state.data} />
        </div>
    );
}
Run Code Online (Sandbox Code Playgroud)

如果没有括号,则会导致错误!


更一般地说,在多行上传递return语句时不使用括号将导致错误.以下示例将正确执行:

var foo = function() {
  var x = 3;
  return (
    x 
    + 
    1
  );
};
console.log(foo());
Run Code Online (Sandbox Code Playgroud)

以下(没有括号)会抛出错误:

var foo = function() {
  var x = 3;
  return 
    x 
    + 
    1
  ;
};
console.log(foo());
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。Return不允许本机跨越多行语句 (3认同)
  • @Callat当然它允许多行表达式。您只是不能在“return”之后放置换行符,否则表达式将成为其自己的语句 - 但仅此而已。 (3认同)

Dar*_*rov 18

它不需要那样,但它是有效的JavaScript代码.实际上,看到这样的语法并不常见.我想这是作者的个人偏好.

  • @silent_coder在这个特定情况下,它没什么用.通常你可以看到括号用于*封闭*视觉上难以理解的代码部分,即使用复杂的*三元运算符*.在上面的代码中,对于没有经验的开发人员来说,括号可能会误导,因为*return*在这种情况下看起来更像是*函数调用.* (3认同)

Bas*_*nic 10

括号在 return 语句中有两个用途。

  • 支持@Andru Answer 中提到的多行表达式。
  • 允许在箭头函数中返回对象,如下所示:

() => ({ name: 'Amanda' }) // Shorthand to return an object

这相当于

() => {
 return { name : 'Amanda' }
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看这篇文章。 https://medium.com/@leannezhang/curly-braces-versus-parenthesis-in-reactjs-4d3ffd33128f


geo*_*yws 6

// Create a component named MessageComponent
var MessageComponent = React.createClass({
  render: function() {
    return (
      <div>{this.props.message}</div>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

注意 为什么我们需要在 return 语句周围加上括号(第 3 行)?这是因为 JavaScript 的自动分号插入。如果没有括号,JavaScript 将忽略以下行并返回没有值。如果 JSX 与返回在同一行开始,则不需要括号。

取自这里