📅  最后修改于: 2023-12-03 14:56:44.551000             🧑  作者: Mango
箭头函数是一种比传统函数更简洁的语法方式,它在ES6中被引入。箭头函数也被称为“lambda函数”。
箭头函数的语法在传统函数的基础上做了一些简化,具体如下:
// 传统函数
function add(a, b) {
return a + b;
}
// 箭头函数
const add = (a, b) => a + b;
箭头函数的关键在于箭头"(=>)",它出现在函数参数和函数体之间。
箭头函数的语法非常简洁,一行代码即可实现简单的函数。
// 传统函数
function add(a, b) {
return a + b;
}
// 箭头函数
const add = (a, b) => a + b;
箭头函数自动绑定this,不需要显式地调用bind()
、apply()
或call()
方法。
// 传统函数
const person = {
name: 'Tom',
sayName: function() {
console.log(this.name);
}
};
// 箭头函数
const person = {
name: 'Tom',
sayName: () => console.log(this.name)
};
person.sayName(); // 输出:undefined
箭头函数没有自己的arguments
对象,需要用rest
参数来获取所有参数。
// 传统函数
function greet() {
console.log(arguments);
}
greet('Hello', 'World'); // 输出:['Hello', 'World']
// 箭头函数
const greet = (...args) => console.log(args)
greet('Hello', 'World'); // 输出:['Hello', 'World']
箭头函数不能用new
关键字调用,因为箭头函数没有自己的作用域,this
不能被绑定。
// 传统函数
function Person(name) {
this.name = name;
}
const person = new Person('Tom');
console.log(person.name); // 输出:Tom
// 箭头函数
const Person = (name) => { this.name = name };
const person = new Person('Tom'); // 报错
箭头函数不能拥有自己的原型属性,因此也不能作为构造函数使用。
// 传统函数
function Person(name) {
this.name = name;
}
Person.prototype.sayName = function() {
console.log(this.name);
};
const person = new Person('Tom');
person.sayName(); // 输出:Tom
// 箭头函数
const Person = (name) => { this.name = name };
Person.prototype.sayName = () => console.log(this.name); // 报错
使用箭头函数可以让代码更加简洁和易读,可以自动绑定this,但是不能作为构造函数和普通函数,不能拥有自己的原型属性。在实际开发中,应该根据具体情况选择使用传统函数还是箭头函数。