ES6箭头函数

93 阅读1分钟
2. 箭头函数

箭头函数是ES6新增的一种函数声明方式,它可以更简洁地书写函数,并且有更方便的this绑定机制。

箭头函数的语法格式如下:

```
(param1, param2, …, paramN) => { statements }
```

其中,`param1, param2, …, paramN`是函数的参数列表,`statements`是函数体,可以是一条语句或多条语句的块。

箭头函数有以下特点:

1. 简洁:箭头函数可以省略function关键字和return关键字,使得代码更加简洁。

例如,下面是一个普通函数的写法:

```
function add(a, b) {
  return a + b;
}
```

可以使用箭头函数来简化:

```
const add = (a, b) => a + b;
```

2. this绑定:箭头函数没有自己的this,它的this绑定到父级作用域中的this,可以避免this指向错误的问题。

例如,下面是一个普通函数的写法:

```
const obj = {
  name: 'Alice',
  sayName: function() {
    console.log(this.name);
  }
}
```

当我们调用`obj.sayName()`时,输出的是`Alice`。但是如果我们把sayName函数赋值给一个变量再调用,就会出现问题:

```
const sayName = obj.sayName;
sayName(); // 输出undefined
```

这是因为在`sayName()`函数中,this指向的是全局对象,而不是obj对象。可以使用bind方法来解决这个问题:

```
const sayName = obj.sayName.bind(obj);
sayName(); // 输出Alice
```

但是使用箭头函数可以更加简便:

```
const obj = {
  name: 'Alice',
  sayName: () => {
    console.log(this.name);
  }
}
```

这样无论如何调用`obj.sayName()`,输出的都是`Alice`。

需要注意的是,箭头函数不能用作构造函数,也不能使用arguments对象。