JavaScript函數的多種寫法

來源:文萃谷 1.99W

本文主要介紹了JavaScript函數的多種寫法,下面是小編為大家整理的JavaScript函數的多種寫法,歡迎參考~

JavaScript函數的多種寫法

  函數聲明和表達式(舊方法):

最早的函數定義形式就是函數聲明和函數表達式。前者是最初設計的一部分(1995)並出現在第一個版本的規範(1997年)中,後者是在第三個版本(1999年)引入的。我們可以從這些規範中提取三種不同的定義形式:

要注意的是匿名函數表達式可能仍然有一個“名稱”。

  Function構造器

當我們在討論一種語言的“函數API”的時候,就已經開始討論Function構造器。函數聲明的語法形式可以被解釋為函數構造器的API的“文字”形式。Function構造器為定義函數提供了一種方法:通過N個字符串參數指定函數參數和函數主體,(如下面的例子)最後一個字符串參數始終是函數主體(需要指出的是,這是一種動態求值形式,會有潛在的安全風險)。對於大多數情況來説,這種形式並不適合,因此它的使用非常稀少——但是自從第一個版本的`ECMAScript以來,它就一直存在在JavaScript中了。

  新方法:

自從ES2015推出以來,已經引入了幾種新的語法形式。這些形式的變化是巨大的!

  not-so-anonymous函數聲明

這是一種新的匿名函數聲明形式,如果你曾用過ES Modules,應該清楚這種語法。雖然它可能看起來與匿名函數表達式非常相似,但它實際上有一個默認名稱,即“default”

這個“default”本身並不是有效的標識符,並且沒有綁定在該匿名函數上。

  方法定義:

對於下面這個例子,大家應該能很快發現它定義了匿名和命名函數表達式作為屬性的值。注意,這些不是不同的語法形式。它們是之前討論過的函數表達式的示例,是在初始對象時編寫的。這種形式最初是在ES3中引入的。

  在ES5中引入了訪問器屬性定義:

從ES2015開始,JavaScript提供了一個簡單的語法來定義方法,這種語法包括文字屬性名稱和計算屬性名稱形式,以及訪問器形式:

我們還可以使用這些新形式作為類聲明和表達式中的原型方法的定義:

  和定義靜態方法:

  生成器:

生成器有一種特殊的語法,除了箭頭函數和定義setter / getter方法的時候不能添加之外,可以被添加在其他所有語法形式中。我們可以用其生成函數聲明、表達式、定義,甚至構造函數。讓我們把它們列出來:

熱門標籤