箭头函数表达式

箭头函数没有自己的 this, argunment, super 或 new.target,适用于需要匿名函数的地方,不能用作构造函数

  1. sum = (a, b) => a + b

换行

在参数与箭头之间不能换行,可在箭头后换行,或用 () {} 来换行

  1. var func = ()
  2. => 1;
  3. // SyntaxError: expected expression, got '=>'
  4. var func = (a, b, c) =>
  5. 1;
  6. var func = (a, b, c) => (
  7. 1
  8. );
  9. var func = (a, b, c) => {
  10. return 1
  11. };

this

箭头函数不会创建自己的 this , 它从自己的作用域链的上一层继承this

  1. function Person(){
  2. this.age = 0;
  3. setInterval(() => {
  4. this.age++; // |this| 正确地指向 p 实例
  5. }, 1000);
  6. }
  7. var p = new Person();

递归

  1. const fact = x => (x === 0 ? 1 : x * fact(x-1));
  2. fact(5); // 120