箭头函数

箭头函数(Arrow Function),指的是从 ES6 开始新增加的一种声明函数的方式。之所以叫做箭头函数,是因为它的定义用一个箭头=>取代了function关键字。

箭头函数的声明

箭头函数的声明,其实就是将“函数表达式”中的关键字function换成了=>。语法结构如下:

1
2
3
let fn = () => {
// ...
}

例:

1
2
3
4
let foo = () => {
console.log("hello arrow function");
}
foo(); // hello arrow function

箭头函数的简写

上面所介绍的,是箭头函数的基本结构写法。实际上箭头函数根据形参数量和函数体的不同,可以进一步的简化结构。如下:

  • 当箭头函数只有一个形参时,小括号()可以省略。

    1
    2
    3
    let fn = a => {
    console.log( a );
    }
  • 当函数体内部只有一条return语句时,大括号{}return关键字都可以省略。

    1
    2
    3
    4
    5
    6
    let fn = (a, b) => a * b;
    // 等同于
    let fn = (a, b) => {
    return a * b;
    }

箭头函数的 this

ES6 中的箭头函数跟普通函数除了写法上有所不同以外,还有一个最大的区别 —— this。

箭头函数是没有自己的 this 的。因此在箭头函数中访问 this 时,实际访问的是继承于父级的 this。

箭头函数的父级,指的是箭头函数定义时所在的执行上下文。

例:

1
2
3
4
5
6
7
8
9
let obj = {
foo: function () {
let bar = () => {
console.log(this);
}
bar();
}
}
obj.foo();
我 秦始皇 打钱