JavaScript 箭头函数
箭头函数是 ES6 推出的新特性,它让我们能更简单、更快捷地写函数。特别在做一些快速操作,比如回调或者简单计算时,箭头函数特别好用。而且,它在处理 this
这个关键字时,比传统函数更直观。
需要注意的地方
- 没有自己的
this
、arguments
等:箭头函数不会创建自己的this
、arguments
等变量,它会直接使用外面函数的这些变量。 - 不能当构造函数:不能用
new
关键字来创建箭头函数的新实例,否则会报错。 - 不能做生成器:箭头函数里不能用
yield
关键字。
怎么使用箭头函数
定义箭头函数
定义箭头函数的语法非常简洁。基本语法如下:
const add = (a, b) => a + b;
如果函数体包含多条语句,需要用大括号包裹,并显式使用 return
返回值:
const add = (a, b) => {
const sum = a + b;
return sum;
};
使用箭头函数处理 this
箭头函数在处理 this
关键字时,与传统函数的行为不同。箭头函数不会创建自己的 this
,它会继承外层上下文的 this
值:
function Person() {
this.age = 0;
setInterval(() => {
this.age++;
console.log(this.age);
}, 1000);
}
const person = new Person(); // 每秒输出递增的年龄
避免箭头函数作为构造函数
箭头函数不能作为构造函数使用,尝试使用 new
调用箭头函数会引发 TypeError
:
const Foo = () => {};
const foo = new Foo(); // TypeError: Foo is not a constructor
传递参数
箭头函数不绑定 arguments
对象,但可以使用剩余参数语法获取传递的参数。下面这段代码定义了一个箭头函数 sum
,该函数接收任意数量的参数,并计算它们的总和。这是通过使用 ES6 中的剩余参数(...args
)和解构赋值来实现的。最后,使用 reduce
方法来累加所有传入的参数值。
const sum = (...args) => args.reduce((acc, curr) => acc + curr, 0);
console.log(sum(1, 2, 3, 4)); // 10