fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[TypeScript] 第1542天 在TypeScript中的lambda函数是什么?

Open haizhilin2013 opened this issue 2 years ago • 1 comments
trafficstars

第1542天 在TypeScript中的lambda函数是什么?

3+1官网

我也要出题

haizhilin2013 avatar Jul 05 '23 20:07 haizhilin2013

在TypeScript中,lambda函数通常指的是箭头函数(Arrow Functions)。箭头函数是ES6(ECMAScript 2015)中引入的一种更加简洁的函数表达式语法,TypeScript完全支持箭头函数,并且在一些情况下,箭头函数可以带来更好的代码可读性和简洁性。

箭头函数的语法

箭头函数的语法非常简洁,使用 => 符号定义。其基本语法如下:

(parameters) => { function body }

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

parameter => { function body }

如果函数体只有一条语句,并且需要返回结果,可以省略大括号和 return 关键字:

(parameters) => expression

示例

无参数的箭头函数

const greet = () => {
  console.log("Hello, world!");
};

greet(); // 输出: Hello, world!

有一个参数的箭头函数

const square = (n: number) => n * n;

console.log(square(4)); // 输出: 16

有多个参数的箭头函数

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

console.log(add(2, 3)); // 输出: 5

与普通函数的区别

  1. 语法简洁:箭头函数的语法更加简洁,特别是对于简短的函数。

  2. this 绑定:箭头函数不会创建自己的 this 上下文。它们会捕获定义时的 this 值,继承自外层作用域。这对于在回调函数中使用 this 时特别有用,避免了 this 值的变化。

    普通函数:

    function Person() {
      this.age = 0;
    
      setInterval(function growUp() {
        this.age++; // `this` 不指向 Person 实例
      }, 1000);
    }
    
    const p = new Person();
    

    箭头函数:

    function Person() {
      this.age = 0;
    
      setInterval(() => {
        this.age++; // `this` 指向 Person 实例
      }, 1000);
    }
    
    const p = new Person();
    
  3. 不能用作构造函数:箭头函数不能用作构造函数,使用 new 调用箭头函数会导致错误。

  4. 没有 arguments 对象:箭头函数没有 arguments 对象,可以使用剩余参数(Rest Parameters)代替。

使用场景

  1. 回调函数:箭头函数在回调函数中非常常用,例如数组方法 mapfilterreduce 的回调:

    const numbers = [1, 2, 3, 4, 5];
    const squares = numbers.map(n => n * n);
    console.log(squares); // 输出: [1, 4, 9, 16, 25]
    
  2. 简化函数表达式:对于简短的函数表达式,箭头函数可以使代码更加简洁:

    const add = (a: number, b: number) => a + b;
    console.log(add(2, 3)); // 输出: 5
    
  3. 保持 this 上下文:在需要保持 this 上下文的情况下,使用箭头函数可以避免 this 值的变化:

    class Timer {
      seconds: number;
      constructor() {
        this.seconds = 0;
      }
    
      start() {
        setInterval(() => {
          this.seconds++;
          console.log(this.seconds);
        }, 1000);
      }
    }
    
    const timer = new Timer();
    timer.start();
    

总结

箭头函数是TypeScript中的一种简洁的函数表达方式,提供了更简洁的语法和更方便的 this 绑定。它们在许多场景中非常有用,尤其是在回调函数和需要保持 this 上下文时。

llccing avatar Jun 26 '24 08:06 llccing