创建函数还有另外一种非常简单的语法,它被称为“箭头函数”。

  1. let func = (arg1, arg2, ...argN) => expression

……这里创建了一个函数 func,它接受参数 arg1..argN,然后使用参数对右侧的 expression 求值并返回其结果。
换句话说,它是下面这段代码的更短的版本:

  1. let func = function(arg1, arg2, ...argN) {
  2. return expression;
  3. };

让我们来看一个具体的例子:

  1. let sum = (a, b) => a + b;
  2. /* 这个箭头函数是下面这个函数的更短的版本:
  3. let sum = function(a, b) {
  4. return a + b;
  5. };
  6. */
  7. alert( sum(1, 2) ); // 3

可以看到 (a, b) => a + b 表示一个函数接受两个名为 a 和 b 的参数。在执行时,它将对表达式 a + b 求值,并返回计算结果。
如果我们只有一个参数,还可以省略掉参数外的圆括号,使代码更短。

  1. let double = n => n * 2;
  2. // 差不多等同于:let double = function(n) { return n * 2 }
  3. alert( double(3) ); // 6

如果没有参数,括号将是空的(但括号应该保留):

  1. let sayHi = () => alert("Hello!");
  2. sayHi();

箭头函数可以像函数表达式一样使用。

  1. let age = prompt("What is your age?", 18);
  2. let welcome = (age < 18) ?
  3. () => alert('Hello') :
  4. () => alert("Greetings!");
  5. welcome();

多行的箭头函数

花括号将多行的表达式或语句括起来。
然后使用一个普通的 return 将需要返回的值进行返回。

  1. let sum = (a, b) => { // 花括号表示开始一个多行函数
  2. let result = a + b;
  3. return result; // 如果我们使用了花括号,那么我们需要一个显式的 “return”
  4. };
  5. alert( sum(1, 2) ); // 3

深入理解箭头函数 一章中再继续研究箭头函数。

总结

对于一行代码的函数来说,箭头函数是相当方便的。它具体有两种:

  1. 不带花括号:(…args) => expression — 右侧是一个表达式:函数计算表达式并返回其结果。
  2. 带花括号:(…args) => { body } — 花括号允许我们在函数中编写多个语句,但是我们需要显式地 return 来返回一些内容。