原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

箭頭函數表達式的語法比函數表達式更短,並且沒有自己的this、arguments、super或 new.target。這些函數表達式更適用於那些本來需要匿名函數的地方,並且它們不能用作構造函數。

語法

基礎語法

原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

基礎語法

高級語法

原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

高級語法

描述

引入箭頭函數有兩個方面的作用:更簡短的函數並且不綁定this。

更短的函數

原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

不綁定this

在箭頭函數出現之前,每個新定義的函數都有它自己的 this值(在構造函數的情況下是一個新對象,在嚴格模式的函數調用中為 undefined,如果該函數被作為“對象方法”調用則為基礎對象等)。

原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

在ECMAScript 3/5中,通過將this值分配給封閉的變量,可以解決this問題。

原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

或者,可以創建綁定函數,以便將預先分配的this值傳遞到綁定的目標函數(上述示例中的growUp()函數)。

箭頭函數不會創建自己的this,它只會從自己的作用域鏈的上一層繼承this。因此,在下面的代碼中,傳遞給setInterval的函數內的this與封閉函數中的this值相同:

原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

與嚴格模式的關係

鑑於 this 是詞法層面上的,嚴格模式中與 this 相關的規則都將被忽略。

原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

通過 call 或 apply 調用

由於 箭頭函數沒有自己的this指針,通過 call() 或 apply() 方法調用一個函數時,只能傳遞參數(不能綁定this),他們的第一個參數會被忽略。(這種現象對於bind方法同樣成立)

原來這就是JS箭頭函數!適合新手入門的前端JavaScript代碼(上)

編程是一種修行,我願與志同道合的朋友攜手前行,一起探索有關編程的奧妙!

如果您在前端學習的過程中遇到難題,歡迎【關注】並【私信】我,大家一起交流解決!

文章推薦:


分享到:


相關文章: