在ES2018中,函數已經是一個很複雜的體系了,整理一下
第一種,普通函數:用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
}