ECMAScript6箭头函数返回一个对象

当从箭头函数返回一个对象时,由于语法中的含糊不清,似乎有必要使用额外的一组{}和一个return语句:

p => { return { foo: 'bar' } }

如果箭头函数返回其他内容,那么{}和return是不必要的,例如:

p => 'foo'

有什么明显的我失踪?

您必须将返回的对象字面值包装到括号中。 否则,大括号将被视为表示function的身体。 以下工作:

 p => ({ foo: 'bar' }); 

您不需要将任何其他expression式包装到括号中:

 p => 10; p => 'foo'; p => true; p => [1,2,3]; p => null; p => /^foo$/; 

等等。

您可能会想,为什么语法是有效的(但不能按预期工作):

 var func = p => { foo: "bar" } 

这是因为JavaScript的标签语法 :

所以如果你把上面的代码转换成ES5,它应该看起来像这样:

 var func = function (p) { foo: "bar"; //obviously no return here! } 

如果箭头函数的主体包裹在花括号中,则不会隐式返回。 将对象包裹在圆括号中。 它看起来像这样。

 p => ({ foo: 'bar' }) 

通过将身体包裹在parens中,该函数将返回{ foo: 'bar }

希望能解决你的问题。 如果不是的话,我最近写了一篇关于箭头函数的文章,里面详细介绍了它。 希望对你有帮助。 Javascript的箭头函数