函式基礎 匿名函式,函式,箭頭函式,立即執行函式

2022-07-11 17:36:10 字數 2385 閱讀 1869

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

meta

name

="viewport"

content

="width=device-width, initial-scale=1.0"

>

<

title

>document

title

>

head

>

<

body

>

body

>

<

script

>

/*匿名函式

*/varx =

function

(num)

/*函式

*/function

getage(age)

/*形參:a,b,c

*/function

vars(a,b,c)

}/*實參:1,2,3

*/vars(1,

2,3);

//系統會建立 arguments = [1,2,3]

/*不定引數函式

*/function

sum()

return

result;

}sum(1,

2,5,

9,7);

/*箭頭函式

*/let elements =[

'hydrogen',

'helium',

'lithium',

'beryllium'];

elements.map(

function

(element) );

//返回陣列:[8, 6, 7, 9]

//上面的普通函式可以改寫成如下的箭頭函式

elements.map((element)

=>

); //

[8, 6, 7, 9]

//當箭頭函式只有乙個引數時,可以省略引數的圓括號

elements.map(element

=>

); //

[8, 6, 7, 9]

//當箭頭函式的函式體只有乙個 `return` 語句時,可以省略 `return` 關鍵字和方法體的花括號

elements.map(element

=>

element.length);

//[8, 6, 7, 9]

//在這個例子中,因為我們只需要 `length` 屬性,所以可以使用引數解構

//需要注意的是字串 `"length"` 是我們想要獲得的屬性的名稱,而 `lengthfoobarx` 則只是個變數名,

//可以替換成任意合法的變數名

elements.map(()

=>

lengthfoobarx);

//[8, 6, 7, 9]

//等效於

elements.map(

function

( element ) );

// 立即執行函式:定義出來的函式占用記憶體,對於一次性的函式,可以使用立即執行函式

(function(a, b) (1, 2));

let an = function(a, b) (1, 2);

script

>

html

>

關於匿名函式:

配合var關鍵字,匿名函式不會造成全域性變數的汙染。

關於箭頭函式:

(param1, param2, …, paramn) =>

(param1, param2, …, paramn) => expression

箭頭函式表示式的語法比函式表示式更簡潔,並且沒有自己的this,arguments,super或new.target。箭頭函式表示式更適用於那些本來需要匿名函式的地方,並且它不能用作建構函式。

引入箭頭函式有兩個方面的作用:更簡短的函式並且不繫結this。

在箭頭函式出現之前,每乙個新函式根據它是被如何呼叫的來定義這個函式的this值:

箭頭函式不繫結arguments 物件。

箭頭函式不能用作構造器,和 new一起用會丟擲錯誤。

箭頭函式沒有prototype屬性。

yield 關鍵字通常不能在箭頭函式中使用(除非是巢狀在允許使用的函式內)。因此,箭頭函式不能用作函式生成器

匿名函式與箭頭函式的區別

you don t know js 給出了乙個決策圖 箭頭函式適合於無複雜邏輯或者無 的純函式場景下,例如用在map reduce filter的 函式定義中 不要在最外層定義箭頭函式,因為在函式內部操作this會很容易汙染全域性作用域。最起碼在箭頭函式外部包一層普通函式,將this控制在可見的範圍...

箭頭函式基礎

基本用法 es6使用 箭頭 定義函式 varf v v 等同於varf function v 使用注意點 函式體內的this物件,就是定義是所在的物件,而不是使用時所在的物件。不可以當作建構函式,也就是說,不可以使用new命令,否則會丟擲錯誤。不可以使用arguments物件,該物件在函式體內不存在...

函式基礎(三) 巢狀函式 匿名函式

講完作用域之後 對變數的作用範圍有大致的了解了嗎?講個稍微小高階的東西吧 能夠幫助你更加的理解全域性和區域性變數 從小的一點一點的往大了裝,乙個巢狀乙個 函式也可以這麼玩 msg 我是全域性變數 def func msg 我是函式func的區域性變數 def func1 msg 我是函式func1的...