箭頭函式和普通函式的區別是什麼?

2021-10-25 20:00:52 字數 1039 閱讀 8766

普通函式this:

箭頭函式this:

區別:箭頭函式是匿名函式,不能作為建構函式,不能使用new

let

func=(

)=>

let fc =

newfunc()

;// typeerror: func is not a constructor

箭頭函式不繫結arguments,取而代之用rest引數…解決

function

fn1(a)

}let

fn2=

(b)=>

letfn3=(

...c)

=>

fn1(1)

;fn2(2

);fn3(3)

;

箭頭函式會捕獲其所在上下文的 this 值,作為自己的 this 值

const obj =},

c:function()

}}obj.b(

); obj.c(

);

let obj2 =

, c:

function

(n);

return f.

call

(m,n);}

};console.

log(obj2.b(

1));

// 11

console.

log(obj2.c(

1));

// 11 而不是 21

箭頭函式沒有原型屬性

leta=

()=>

functionb(

)console.

log(a.prototype)

;// undefined

console.

log(b.prototype)

;//

箭頭函式不能當做generator函式,不能使用yield關鍵字

箭頭函式與普通函式的區別是什麼?如何實現乙個new

箭頭函式是普通函式的簡寫,可以更優雅的定義乙個函式,和普通函式相比,有以下幾點差異 2 不可以使用 arguments 物件,該物件在函式體內不存在。如果要用,可以用 rest 引數代替。3 不可以使用 yield 命令,因此箭頭函式不能用作 generator 函式。4 不可以使用 new 命令,...

內聯函式與普通函式的區別是什麼

內聯函式是 被插入到呼叫者 處的函式。如同 define 巨集,內聯函式通過避免被呼叫的開銷來提高執行效率,尤其是它能夠通過呼叫 過程化整合 被編譯器優化。內聯函式和巨集很類似,而區別在於,巨集是由預處理器對巨集進行替代,而內聯函式是通過編譯器控制來實現的。而且內聯函式是真正的函式,只是在需要用到的...

內聯函式與普通函式的區別是什麼

內聯函式是 被插入到呼叫者 處的函式。如同 define 巨集,內聯函式通過避免被呼叫的開銷來提高執行效率,尤其是它能夠通過呼叫 過程化整合 被編譯器優化。內聯函式和巨集很類似,而區別在於,巨集是由預處理器對巨集進行替代,而內聯函式是通過編譯器控制來實現的。而且內聯函式是真正的函式,只是在需要用到的...