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