Skip to content
目录

箭头函数,基础知识

创建函数还有另外一种非常简单的语法,并且这种方法通常比函数表达式更好。

它被称为“箭头函数”,因为它看起来像这样:

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

这里创建了一个函数 func,它接受参数 arg1..argN,然后使用参数对右侧的 expression 求值并返回其结果。

换句话说,它是下面这段代码的更短的版本:

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

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

let sum = (a, b) => a + b;

/* 这个箭头函数是下面这个函数的更短的版本:

let sum = function(a, b) {
  return a + b;
};
*/

alert( sum(1, 2) ); // 3
1
2
3
4
5
6
7
8
9
10

可以看到 (a, b) => a + b 表示一个函数接受两个名为 ab 的参数。在执行时,它将对表达式 a + b 求值,并返回计算结果。

  • 如果我们只有一个参数,还可以省略掉参数外的圆括号,使代码更短。

    例如:

    *!*
    let double = n => n * 2;
    // 差不多等同于:let double = function(n) { return n * 2 }
    */!*
    
    alert( double(3) ); // 6
    
    1
    2
    3
    4
    5
    6
  • 如果没有参数,括号则是空的(但括号必须保留):

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

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

例如,动态创建一个函数:

let age = prompt("What is your age?", 18);

let welcome = (age < 18) ?
  () => alert('Hello!') :
  () => alert("Greetings!");

welcome();
1
2
3
4
5
6
7

一开始,箭头函数可能看起来并不熟悉,也不容易读懂,但一旦我们看习惯了之后,这种情况很快就会改变。

箭头函数对于简单的单行行为(action)来说非常方便,尤其是当我们懒得打太多字的时候。

多行的箭头函数

到目前为止,我们看到的箭头函数非常简单。它们从 => 的左侧获取参数,计算并返回右侧表达式的计算结果。

有时我们需要更复杂一点的函数,比如带有多行的表达式或语句。在这种情况下,我们可以使用花括号将它们括起来。主要区别在于,用花括号括起来之后,需要包含 return 才能返回值(就像常规函数一样)。

就像这样:

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

alert( sum(1, 2) ); // 3
1
2
3
4
5
6
7
8

更多内容

在这里,我们赞扬了箭头函数的简洁性。但还不止这些!

箭头函数还有其他有趣的特性。

为了更深入地学习它们,我们首先需要了解一些 JavaScript 其他方面的知识,因此我们将在后面的 箭头函数,基础知识 一章中再继续研究箭头函数。

现在,我们已经可以用箭头函数进行单行行为和回调了。

总结

箭头函数对于简单的操作很方便,特别是对于单行的函数。它具体有两种形式:

  1. 不带花括号:(...args) => expression —— 右侧是一个表达式:函数计算表达式并返回其结果。如果只有一个参数,则可以省略括号,例如 n => n*2
  2. 带花括号:(...args) => { body } —— 花括号允许我们在函数中编写多个语句,但是我们需要显式地 return 来返回一些内容。
箭头函数,基础知识 has loaded