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

2021-09-24 09:10:53 字數 1317 閱讀 9813

箭頭函式:

let fun = () =>
普通函式:

function fun()
箭頭函式相當於匿名函式,並且簡化了函式定義。箭頭函式有兩種格式,一種只包含乙個表示式,連和return都省略掉了。還有一種可以包含多條語句,這時候就不能省略和return。

(1)箭頭函式是匿名函式,不能作為建構函式,不能使用new

let funconstructor = () => 

let fc = new funconstructor();

(2)箭頭函式不繫結arguments,取而代之用rest引數...解決

function a(a)

a(1,2,3,4,5,8); // [1, 2, 3, 4, 5, 8, callee: ƒ, symbol(symbol.iterator): ƒ]

let b = (b)=>

b(2,92,32,32); // uncaught referenceerror: arguments is not defined

let c = (...c) =>

c(3,82,32,11323); // [3, 82, 32, 11323]

(3)箭頭函式不繫結this,會捕獲其所在的上下文的this值,作為自己的this值

var obj = 

},c: function()

}}obj.b();

obj.c();

var 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

(5)箭頭函式沒有原型屬性

var a = ()=>

function b()

console.log(a.prototype); // undefined

console.log(b.prototype); //

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

總結:普通函式的this指向呼叫它的那個物件

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

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

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

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

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

首先知道一下什麼是箭頭函式,箭頭函式就是沒有function關鍵字,而是乙個類似箭頭的函式 var a 相當於 es6新特性有哪些?function a 那麼就來看一下他們的區別 箭頭函式作為匿名函式,是不能作為建構函式的,不能使用new var b var b new b typeerror b ...