这两个函数作为箭头函数的语法是什么?

What would be the syntax on these two functions as an arrow function?

无法弄清楚这些箭头函数的语法。我是新手...

var numbers = [1, 25, 6, 88, 47, 77, 333, 500];

var even = function (num) {
  return num % 2 === 0;
};
var evens = numbers.filter(even);


var plusThree = numbers.map(function(element) {
  return element + 3;
});
var even = num => num % 2 === 0;

var plusThree = numbers.map(element => element + 3);
function (num) {
  return num % 2 === 0;
};

会变成

(num) => num & 2 === 0

numbers.map(function(element) {
  return element + 3;
});

会变成

numbers.map((element) => element + 3)

最通用的方法是,给定这种形式的匿名函数

function(arg1,arg2,...) { code }

对应的箭头函数是这种形式

(arg1, arg2,...) => { code }

有一种特殊情况,其中 code 只不过是 return 语句后跟一个表达式,即当函数代码中除了 return 语句。在那种情况下,你会得到更好的东西。

function (arg1,arg2,...) { return expression; }

变成

(arg1,arg2,...) => expression

因此,除了已经发布的内容之外,您始终可以执行类似的操作(例如,如果您希望箭头函数有副作用)

numbers.filter(num => { console.log(num); return num % 2 == 0})

编辑: 正如评论中指出的那样,仅当您有多个参数时,参数列表周围的 () 才是必需的。所以以下也有效

arg1 => { code }
arg1 => expression