nodejs带表达式的箭头函数

时间:2015-12-25 12:20:43

标签: javascript node.js ecmascript-6 arrow-functions

根据documentation,您可以从箭头函数返回一个表达式:

readsome

但这似乎没有像我期望的那样工作(nodejs 4.2.3)

(param1, param2, …, paramN) => expression
     // equivalent to:  => { return expression; }

第二个例子不应该返回3个空对象吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:5)

根据the docs,胖箭头函数的主体可以写成单个表达式或包含在{}中的一系列语句(就像你编写普通旧函数的主体一样)。 / p>

关键是,如果解析器在{之后遇到=>,则会使用第二个选项。现在,无论您是否使用空对象文字或完整对象文字(如本答案的第一次编辑中的{ a: 2 }) - 它从未被视为对象文字,仅作为函数的主体。

如果函数没有return语句会发生什么?右 - 此函数返回undefined。这就是为什么你得到map的结果中的三个(=> {}=> { a: 2 })。

要获得三个空对象,只需将{}包裹到()中,如下所示:

[1,2,3].map(i => ({}));

...因为它强制解析器使用expression路径。