📜  通用箭头函数打字稿(1)

📅  最后修改于: 2023-12-03 15:41:58.311000             🧑  作者: Mango

通用箭头函数打字稿

通用箭头函数是一种JavaScript函数,它使用箭头语法定义。它与常规函数的不同之处在于其this指针在定义时绑定,而不是在运行时绑定。这意味着您可以使用箭头函数来编写更简洁、更具可读性的代码。

语法

箭头函数的语法很简单,如下所示:

(param1, param2, ..., paramN) => { statements }

例如,以下代码定义了一个箭头函数,它将两个参数相加并返回结果:

const add = (a, b) => {
  return a + b;
};

您可以省略大括号和return语句来缩短函数的长度:

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

如果函数只有一个参数,您可以省略括号:

const double = num => num * 2;
绑定this

箭头函数的最重要的特性,是绑定this指针的方式。通常情况下,在函数中使用this指针时,this指向函数的调用者。但是,在箭头函数中,this指针的值在函数声明时绑定。这意味着箭头函数中的this指针永远指向箭头函数的定义所在的对象,而不是调用箭头函数的对象。

例如:

const person = {
  name: 'John',
  sayHi: function() {
    console.log(`Hi, my name is ${this.name}.`);
  },
  sayHiArrow: () => {
    console.log(`Hi, my name is ${this.name}.`);
  }
};

person.sayHi(); // 输出: "Hi, my name is John."
person.sayHiArrow(); // 输出: "Hi, my name is undefined."

在上面的例子中,sayHi函数是一个常规函数,使用this指针来引用person对象。执行person.sayHi()时,函数中的this指向person对象。sayHiArrow函数是一个箭头函数。由于箭头函数中的this指针绑定在函数定义时,它指向全局对象而不是person对象。

箭头函数与常规函数之间的差异

除了this指针的绑定方式之外,箭头函数与常规函数之间还存在其他一些差异。

  • 不能使用arguments对象。

    在箭头函数中,arguments对象未定义。相反,您可以使用Rest参数将函数的所有参数放入一个数组中。

  • 没有prototype属性。

    箭头函数没有prototype属性,因此您无法将其用作构造函数。

  • 不能使用new关键字。

    箭头函数不能用作构造函数,不能与new关键字一起使用。

  • 无法使用yield关键字。

    箭头函数不能用作生成器函数,因此无法使用yield关键字。

  • 无法使用call、apply、bind等方法更改this指针的指向。

    由于箭头函数中的this指针绑定在函数定义时,因此无法使用call、apply、bind等方法更改this指针的指向。

总结

箭头函数是一种代码简洁、易读性高的编程方式,可以有效地减少代码中冗余的字符和语法。然而,在使用时需要注意绑定this指针的方式以及与常规函数之间的差异,以便正确地使用它们。