箭头函数和普通函数的区别

83 阅读1分钟

《用得上的前端知识》系列 - 你我都很忙,能用100字说清楚,绝不写万字长文

区别

  • 箭头函数在运行时不会创建执行上下文,因此
    • this 永远指向函数定义时所在的执行上下文的 this,无法通过 call, apply, bind 改变 this 绑定;
      • 但可以改变函数定义时所在的执行上下文的 this。
    • 不支持 arguments 对象,其内部的 arguments 实际上是外层非箭头函数里面的 arguments。
  • 箭头函数没有原型,不能通过 new 关键字调用,也没有 new.target;
  • 箭头函数不能用作 Generator 函数,不能使用 yeild 关键字;
  • 全局作用域下,箭头函数内部的 this 关键字在严格模式和非严格模式下都会指向 window;
  • 箭头函数不支持函数参数重命名(参数名不能重复),普通函数的函数参数支持重命名;
    • 如:var fn = (a, a)=>{},参数重复,会报错
  • 箭头函数相对于普通函数语法更简洁优雅。

参考资料