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

时间:2013-12-29 11:14:52

标签: javascript

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

function queryParser(options) {

    function parseQueryString(req, res, next) {
        // Some code goes there
        return (next());
    }
    return (parseQueryString);
}

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

7 个答案:

答案 0 :(得分:81)

如果你想在几行上写语句,则必须在返回时使用括号。

React.js提供了一个有用的示例。在组件中render属性的return语句中,您通常希望传播JSX,为了可读性原因,您将返回多行,例如:

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

没有括号会导致错误!

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

&#13;
&#13;
var foo = function() {
  var x = 3;
  return (
    x 
    + 
    1
  );
};
console.log(foo());
&#13;
&#13;
&#13;

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

&#13;
&#13;
var foo = function() {
  var x = 3;
  return 
    x 
    + 
    1
  ;
};
console.log(foo());
&#13;
&#13;
&#13;

答案 1 :(得分:18)

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

答案 2 :(得分:4)

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

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

取自here

答案 3 :(得分:3)

  

作者为什么要写return(next()); ......?

关于next()

可能是因为他的功能是这样的:

function next()
{
  var i=0;
  return function (){
    // Do something with that closured i....
  }
}

关于(xxx);

没必要。每个minifier都将删除它。

示例(uglifyJS):

Enter image description here

变为:

Enter image description here

答案 4 :(得分:2)

复归在返回语句中有两个用途。

  • 要支持@Andru Answer。中提到的多行表达式。
  • 要允许使用以下箭头功能返回对象:

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

这等效于

() => {
 return { name : 'Amanda' }
}

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

答案 5 :(得分:1)

只是为了补充别人所说的话。

在返回值周围使用括号是有效的JavaScript,但大多数情况下都是坏事。

非常糟糕,因为它没有添加任何内容但增加了JavaScript的大小,这意味着有更多的内容可以下载到浏览器中。是的,大多数人都有快速的宽带连接,但不要忘记你放在JavaScript文件中的所有内容都需要下载这一事实,以避免不必要的代码膨胀。如果您使用工具来压缩代码(已经提到过minifier),这可能无关紧要,但不是每个人都这样做。

有时它可能有助于提高可读性。在这种情况下很难想到一个例子,但是如果使用括号使得你的JavaScript作为开发人员更清晰,从而更容易维护,那么就使用它们 - 即使它与我所说的代码膨胀相反。

答案 6 :(得分:0)

这可能很旧但return ()可以这样使用:

function parseQueryString(req, res, next) {
            var id = req.param('id');
            return (id ? "Foo" : "Bar");
}

代码少,易读:)