本文主要分析了JavaScript中函數的幾種寫法,具體如下:
1、函數的聲明和表達式(舊方法,也是最常見的方法)
2、通過Function構造器
這也是一種從一開始就存在方法,但是因為書寫麻煩等原因,相對使用較少
3、自從ECMAScript 2015(es6)推出以后,又引進了幾種新的語法,具體如下:
(1)not-so-anonymous函數聲明
這是一種新的匿名函數聲明形式,如果使用過ES Modules的,就知道這種語法。雖然在表達上它與匿名函數非常相似,但它實際上有一個默認的名稱‘default’。
1 export default function(){}
此處,這個‘default’本身不是有效的標識符,並且沒有綁定在該匿名函數上。
(2)方法定義
對於以下例子,我們可以很容易發現它定義了匿名和命名函數表達式作為屬性的值。這些其實不是不同的語法形式,而是之前討論的函數表達式的示例,是在初始化對象時編寫的。
以上形式最初在ES3中定義,在ES5中引入了訪問器屬性定義:
從ES6開始,JavaScript提供了一個簡單的語法來定義方法,這種語法包括文字屬性名稱和計算屬性名稱以及訪問器形式:
以及靜態方法:
升成器:
升成器有一種特殊的語法,除了箭頭函數=>和定義setter/getter方法的時候不能添加之外,可以被添加在其他所有語法形式之中。我們可以通過其生成函數聲明、表達式、定義,甚至是構造函數: