函数
第一种,普通函数:用 function 关键字定义的函数。
function foo(){ // code }
第二种,箭头函数:用 => 运算符定义的函数。
const foo = () => { // code }
第三种,方法:在 class 中定义的函数。
class C { foo(){ //code } }
第四种,生成器函数:用 function * 定义的函数。
function* foo(){ // code }
第五种,类:用 class 定义的类,实际上也是函数。
class Foo { constructor(){ //code } }
第六 / 七 / 八种,异步函数:普通函数、箭头函数和生成器函数加上 async 关键字。
async function foo(){ // code } const foo = async () => { // code } async function foo*(){ // code }
ES6 以来,大量加入的新语法极大地方便了我们编程的同时,也增加了很多我们理解的心智负担。要想认识这些函数的执行上下文切换,我们必须要对它们行为上的区别有所了解。对普通变量而言,这些函数并没有本质区别,都是遵循了“继承定义时环境”的规则,它们的一个行为差异在于 this 关键字。