根据documentation,您可以从箭头函数返回一个表达式:
readsome
但这似乎没有像我期望的那样工作(nodejs 4.2.3)
(param1, param2, …, paramN) => expression
// equivalent to: => { return expression; }
第二个例子不应该返回3个空对象吗?或者我错过了什么?
答案 0 :(得分:5)
根据the docs,胖箭头函数的主体可以写成单个表达式或包含在{}
中的一系列语句(就像你编写普通旧函数的主体一样)。 / p>
关键是,如果解析器在{
之后遇到=>
,则会使用第二个选项。现在,无论您是否使用空对象文字或完整对象文字(如本答案的第一次编辑中的{ a: 2 }
) - 它从未被视为对象文字,仅作为函数的主体。
如果函数没有return
语句会发生什么?右 - 此函数返回undefined
。这就是为什么你得到map
的结果中的三个(=> {}
和=> { a: 2 }
)。
要获得三个空对象,只需将{}
包裹到()
中,如下所示:
[1,2,3].map(i => ({}));
...因为它强制解析器使用expression
路径。