- 相關(guān)推薦
JavaScript函數(shù)的多種寫法
本文主要介紹了JavaScript函數(shù)的多種寫法,下面是小編為大家整理的JavaScript函數(shù)的多種寫法,歡迎參考~
函數(shù)聲明和表達(dá)式(舊方法):
最早的函數(shù)定義形式就是函數(shù)聲明和函數(shù)表達(dá)式。前者是最初設(shè)計(jì)的一部分(1995)并出現(xiàn)在第一個(gè)版本的規(guī)范(1997年)中,后者是在第三個(gè)版本(1999年)引入的。我們可以從這些規(guī)范中提取三種不同的定義形式:
要注意的是匿名函數(shù)表達(dá)式可能仍然有一個(gè)“名稱”。
Function構(gòu)造器
當(dāng)我們?cè)谟懻撘环N語言的“函數(shù)API”的時(shí)候,就已經(jīng)開始討論Function構(gòu)造器。函數(shù)聲明的語法形式可以被解釋為函數(shù)構(gòu)造器的API的“文字”形式。Function構(gòu)造器為定義函數(shù)提供了一種方法:通過N個(gè)字符串參數(shù)指定函數(shù)參數(shù)和函數(shù)主體,(如下面的例子)最后一個(gè)字符串參數(shù)始終是函數(shù)主體(需要指出的是,這是一種動(dòng)態(tài)求值形式,會(huì)有潛在的安全風(fēng)險(xiǎn))。對(duì)于大多數(shù)情況來說,這種形式并不適合,因此它的使用非常稀少——但是自從第一個(gè)版本的ECMAScript以來,它就一直存在在JavaScript中了。
新方法:
自從ES2015推出以來,已經(jīng)引入了幾種新的語法形式。這些形式的變化是巨大的!
not-so-anonymous函數(shù)聲明
這是一種新的匿名函數(shù)聲明形式,如果你曾用過ES Modules,應(yīng)該清楚這種語法。雖然它可能看起來與匿名函數(shù)表達(dá)式非常相似,但它實(shí)際上有一個(gè)默認(rèn)名稱,即“default”
這個(gè)“default”本身并不是有效的標(biāo)識(shí)符,并且沒有綁定在該匿名函數(shù)上。
方法定義:
對(duì)于下面這個(gè)例子,大家應(yīng)該能很快發(fā)現(xiàn)它定義了匿名和命名函數(shù)表達(dá)式作為屬性的值。注意,這些不是不同的語法形式。它們是之前討論過的函數(shù)表達(dá)式的示例,是在初始對(duì)象時(shí)編寫的。這種形式最初是在ES3中引入的。
在ES5中引入了訪問器屬性定義:
從ES2015開始,JavaScript提供了一個(gè)簡單的語法來定義方法,這種語法包括文字屬性名稱和計(jì)算屬性名稱形式,以及訪問器形式:
我們還可以使用這些新形式作為類聲明和表達(dá)式中的原型方法的定義:
和定義靜態(tài)方法:
生成器:
生成器有一種特殊的語法,除了箭頭函數(shù)和定義setter / getter方法的時(shí)候不能添加之外,可以被添加在其他所有語法形式中。我們可以用其生成函數(shù)聲明、表達(dá)式、定義,甚至構(gòu)造函數(shù)。讓我們把它們列出來:
【JavaScript函數(shù)的多種寫法】相關(guān)文章:
JavaScript的應(yīng)用10-19
如何入門學(xué)習(xí)JavaScript11-10