📜  箭头函数 (1)

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

箭头函数介绍

箭头函数是 ES6 中新增的一种函数写法,它可以更简洁、更易读。与传统的函数表达式相比,箭头函数可以自动将上下文绑定到this上,简化了代码编写。

箭头函数语法

箭头函数的基本语法如下:

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

箭头函数由三部分组成:

  1. 参数:与传统的函数一样,箭头函数可以接受一个或多个参数。
  2. 箭头:箭头函数的箭头=>代表函数的返回值。如果箭头函数只有一行代码,则这一行代码的结果就是返回值。否则需要使用花括号{}括起来,并使用return来返回值。
  3. 函数体:箭头函数的执行体,可根据实际情况省略花括号大括号
箭头函数的特性
  1. 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

    对比传统的函数表达式,箭头函数并没有自己的上下文,它会默认使用定义时的上下文。

    const obj = {
      name: "张三",
      getName: function () {
        return function(){
             console.log(this.name)
        }
      },
      getName2: function () {
        return ()=>{
             console.log(this.name)
        }
      }
    };
    
    const func1 = obj.getName();
    func1(); //undefined
    
    const func2 = obj.getName2();
    func2(); //张三
    
  2. 不能用作构造函数

    由于箭头函数没有自己的this对象,因此不能用作构造函数,否则会抛出错误。

  3. 不能使用arguments对象

    箭头函数没有自己的arguments对象,只能使用外围函数的arguments。

  4. 不能使用yield命令

    箭头函数不能使用yield命令,因此不能用作 Generator 函数。

箭头函数与传统函数的区别
  1. 箭头函数更加简洁,书写更加方便。
  2. 箭头函数具有更好的语境绑定,可以减少this指针未被正确绑定的情况。
  3. 箭头函数不具有prototype属性,不能用作构造函数,因此也不支持原型链。
结束语

通过上述介绍,我们可以看出箭头函数具有更加简洁、易读,语境绑定更好等一系列便捷特性,让我们能够更加方便快捷地书写代码。但同时它也有一些限制,不能使用this、arguments以及yield等关键字。需要针对具体的场景,用得恰当才能取得更好的效果。