ES6 箭头函数

语法

1
2
3
let sum = (num1,num2) => {
return num1 + num2;
}

特点

  1. this 是静态的,this 始终指向函数声明时所在作用域下的 this 的值。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    let stu = {
    name: '李四',
    getAge(){
    console.log(this);
    },
    getName: () => {
    console.log(this);
    }
    }
    stu.getAge();
    stu.getName();
  2. 剪头函数不可以作为构造函数实例化对象

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    let Person = function(name,age){
    this.name = name;
    this.age = age;
    }
    let Student = (name,age) => {
    this.name = name;
    this.age = age;
    }

    let per = new Person('张三',21);
    console.log(per);

    let stu = new Student('张三',21); // 报错
  3. 不能使用 arguments 变量

    1
    2
    3
    4
    5
    6
    7
    8
    let fun1 = function(){
    console.log(arguments);
    }
    let fun2 = () => {
    console.log(arguments);
    }
    fun1(1,2,3);
    fun2(4,5,6); // 报错

缩写

  1. 当函数只有一个参数时,参数两侧的小括号可以省略。

    1
    2
    3
    let add = e => {
    return e + e;
    }
  2. 当函数体只有一条语句时,大括号可以省略,这条语句的运算结果会作为函数的返回值返回,不用写 return。

    1
    2
    let add = e => e + e;
    console.log(add(10)); // 打印 20

使用场景

适用于与 this 无关的回调中,如:计时器等。