在Restify框架代码中,我找到了这个函数:
function queryParser(options) {
function parseQueryString(req, res, next) {
// Some code goes there
return (next());
}
return (parseQueryString);
}
为什么作者会写return (next());
和return (parseQueryString);
?它是否需要括号,如果需要,为什么?
答案 0 :(得分:81)
如果你想在几行上写
React.js
提供了一个有用的示例。在组件中render
属性的return语句中,您通常希望传播JSX,为了可读性原因,您将返回多行,例如:
render: function() {
return (
<div className="foo">
<h1>Headline</h1>
<MyComponent data={this.state.data} />
</div>
);
}
没有括号会导致错误!
更一般地说,在多行上传递return语句时不使用括号将导致错误。以下示例将正确执行:
var foo = function() {
var x = 3;
return (
x
+
1
);
};
console.log(foo());
&#13;
以下(没有括号)抛出错误:
var foo = function() {
var x = 3;
return
x
+
1
;
};
console.log(foo());
&#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):
变为:
答案 4 :(得分:2)
复归在返回语句中有两个用途。
() => ({ 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");
}
代码少,易读:)