跳到主要内容

箭头函数的意义

· 阅读需 2 分钟

为什么引入箭头函数

一句话总结:消除函数二义性

函数的二义性

在支持面向对象的编程语言中,函数往往有两个层面的含义

  1. 指令序列
  2. 创建实例

通常情况下,编程语言应该在语法层面针对函数的两种含义进行区分

但在 js 设计之初并没有进行区分,这也是 js 的其中一个设计缺陷,导致了JS 中的函数具有二义性

虽然社区提出了「构造函数首字母大写」等解决方案,但治标不治本

拿到一个函数却不知道如何使用,这对于开发造成了一定的心智负担

消除函数二义性

ES6 通过引入箭头函数(指令序列)和 class(创建实例)来解决这个问题

class 不仅方便开发人员进行面向对象编程,更重要的是消除了函数的二义性

class 声明的方法,直接调用会报错;同样的,使用 new 关键字来调用箭头函数,同样会报错

这也就回答了为什么箭头函数没有 this / prototype

  • 因为 this 是面向对象中的概念,prototype 是实现面向对象的手段。而箭头函数代表的是指令序列与面向对象无关,不需要创建实例