📜  箭头函数 - Javascript (1)

📅  最后修改于: 2023-12-03 14:56:44.551000             🧑  作者: Mango

箭头函数 - JavaScript

箭头函数是一种比传统函数更简洁的语法方式,它在ES6中被引入。箭头函数也被称为“lambda函数”。

基本语法

箭头函数的语法在传统函数的基础上做了一些简化,具体如下:

// 传统函数
function add(a, b) {
  return a + b;
}

// 箭头函数
const add = (a, b) => a + b;

箭头函数的关键在于箭头"(=>)",它出现在函数参数和函数体之间。

箭头函数的特点
1. 简洁

箭头函数的语法非常简洁,一行代码即可实现简单的函数。

// 传统函数
function add(a, b) {
  return a + b;
}

// 箭头函数
const add = (a, b) => a + b;
2. 自动绑定this

箭头函数自动绑定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
3. 没有arguments对象

箭头函数没有自己的arguments对象,需要用rest参数来获取所有参数。

// 传统函数
function greet() {
  console.log(arguments);
}

greet('Hello', 'World'); // 输出:['Hello', 'World']

// 箭头函数
const greet = (...args) => console.log(args)

greet('Hello', 'World'); // 输出:['Hello', 'World']
箭头函数的不足
1. 不能作为构造函数

箭头函数不能用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'); // 报错
2. 没有原型

箭头函数不能拥有自己的原型属性,因此也不能作为构造函数使用。

// 传统函数
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,但是不能作为构造函数和普通函数,不能拥有自己的原型属性。在实际开发中,应该根据具体情况选择使用传统函数还是箭头函数。