Javascript 为什么代码在里面=>;{}需要一个返回值,其中的内容=>;不';T
我对Ecmascript 6比较陌生。最近,我有了一个发现。我可以打开此提取功能:Javascript 为什么代码在里面=>;{}需要一个返回值,其中的内容=>;不';T,javascript,ecmascript-6,Javascript,Ecmascript 6,我对Ecmascript 6比较陌生。最近,我有了一个发现。我可以打开此提取功能: store.fetchList = () => { const Document = Parse.Object.extend('Document') const query = new Parse.Query(Document) return query.find().then((results) => { return _.map(results, (result) =>
store.fetchList = () => {
const Document = Parse.Object.extend('Document')
const query = new Parse.Query(Document)
return query.find().then((results) => {
return _.map(results, (result) => {
return result.toJSON()
})
})
}
这样做(如果移除花括号,只需第一次返回):
为什么会这样?Ecmascript 5的版本是什么?如果箭头函数只有一个表达式,那么
如果有多个表达式,则
{
和}
中,基本上我们需要创建一个块(函数体)
如果我们看一下ES6中箭头函数的规范,我们会发现
arrow函数[In,Yield]:
箭头参数[?产量][此处无线条终止符]=>ConciseBody[?英寸]
简明的,简明的
[展望未来≠ {]赋值表达式[?In]
{FunctionBody}
正如我们在这里看到的,您可以使用{FunctionBody}
表单,也可以使用AssignmentExpression
表单(您没有{
和}
),但是如果您使用FunctionBody
表单,则需要显式返回值。请注意
(result) => {
return result.toJSON()
}
及
将写为:
(function(result) {
return result.toJSON();
}).bind(this)
在ES5中。因为这是规范。任何关于箭头函数的讨论都会涉及到这一点。从MDN页面:箭头函数可以有“简明体”或通常的“块体”。块体表单不会自动返回值。您需要使用明确的返回语句。如果您要问为什么这是规范,您必须询问委员会成员或查看他们的审议记录。
(result) =>
result.toJSON()
(function(result) {
return result.toJSON();
}).bind(this)