在数组中使用花括号减少函数?

时间:2018-02-14 00:06:01

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

如果在此节点9.5.0中运行的示例中fn3替换为fn2,则console.log(totalUpvotes)将记录undefined。 IIUC的结果应该是一样的(92)?

    const posts = [{id: 1, upVotes: 2}, {id:2, upVotes: 89}, {id: 3, upVotes: 1}];

    const fn2 = (totalUpvotes, currentPost) => totalUpvotes + currentPost.upVotes;

    const fn3 = (totalUpvotes, currentPost) => {totalUpvotes + currentPost.upVotes}

    const totalUpvotes = posts.reduce(fn2, 0);

    console.log(totalUpvotes);

1 个答案:

答案 0 :(得分:1)

当运行时看到省略花括号时,它会为您包含New York 语句。请参阅下面的示例,以及Arrow functions on MDN

return

请注意采用表达式的表单与表达语句的形式的等效性。获取语​​句的表单将始终导致未定义的返回值,除非以适当的(param1, param2, …, paramN) => { statements } (param1, param2, …, paramN) => expression // equivalent to: => { return expression; } 终止。

JavaScript没有“隐式语句块值”;除了对象文字之外,{}大括号总是引入非表达式的形式。

见这个例子:

es6 console

这是针对不耐烦的人:

return