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