普通函式和箭頭函式的區別

2022-03-25 12:53:30 字數 650 閱讀 4077

箭頭函式沒有prototype(原型),所以箭頭函式本身沒有this

箭頭函式的this在定義的時候繼承自外層第乙個普通函式的this。

如果箭頭函式外層沒有普通函式,嚴格模式和非嚴格模式下它的this都會指向window(全域性物件)

箭頭函式本身的this指向不能改變,但可以修改它要繼承的物件的this。

箭頭函式的this指向全域性,使用arguments會報未宣告的錯誤。

箭頭函式的this指向普通函式時,它的argumens繼承於該普通函式

使用new呼叫箭頭函式會報錯,因為箭頭函式沒有constructor

箭頭函式不支援new.target

箭頭函式不支援重新命名函式引數,普通函式的函式引數支援重新命名

箭頭函式相對於普通函式語法更簡潔優雅

箭頭函式的注意事項

箭頭函式一條語句返回物件字面量,需要加括號

箭頭函式在引數和箭頭之間不能換行

箭頭函式的解析順序相對||靠前

不適用場景:箭頭函式的this意外指向和**的可讀性

箭頭函式和普通函式的區別

面試時被問到箭頭函式和普通函式的區別。借用別人的乙個栗子 function make var testfunc make.call testfunc testfunc.call object object可以看到箭頭函式在定義之後,this 就不會發生改變了,無論用什麼樣的方式呼叫它,this 都不...

普通函式和箭頭函式的區別

箭頭函式 let fun 普通函式 function fun 箭頭函式相當於匿名函式,並且簡化了函式定義。箭頭函式有兩種格式,一種只包含乙個表示式,連和return都省略掉了。還有一種可以包含多條語句,這時候就不能省略和return。1 箭頭函式是匿名函式,不能作為建構函式,不能使用new let ...

普通函式和箭頭函式的區別

一 箭頭函式全是匿名函式,普通函式也可以有匿名函式,也可以有具名函式。function a let a function let a 二 箭頭函式不能用於建構函式,不能使用new。三 箭頭函式不繫結this,會捕捉其所在上下文的this指,會作為自己的this值,沒有辦法改變其指向 var obj ...