第一种,普通函数:用 function 关键字定义的函数。
第二种,箭头函数:用 => 运算符定义的函数。
第三种,方法:在 class 中定义的函数。
第四种,生成器函数:用 function * 定义的函数。
第五种,类:用 class 定义的类,实际上也是函数。
第六 / 七 / 八种,异步函数:普通函数、箭头函数和生成器函数加上 async 关键字。
函数能够引用定义时的变量,如上文分析,函数也能记住定义时的 this,因此,函数内部必定有一个机制来保存这些信息。在 JavaScript 标准中,为函数规定了用来保存定义时上下文的私有属性[[Environment]]。当一个函数执行时,会创建一条新的执行环境记录,记录的外层词法环境(outer lexical environment)会被设置成函数的[[Environment]]。
此文章为8月Day03学习笔记,内容来源于极客时间《重学前端》,强烈推荐该课程!