1.箭頭函式相當於匿名函式,是不能作為建構函式的,不能使用new
varb=
()=>
var b =
newb()
;//uncaught typeerror: b is not a constructor
2.箭頭函式不繫結arguments,取而代之用rest引數…解決
function
a(a)
varb
=(b)
=>
varc=(
...c)
=>a(
2);b
(2);
c(2)
;
3.箭頭函式會捕獲其所在上下文的this值,作為自己的this值。即箭頭函式的作用域會繼承自外圍的作用域。外層沒有普通函式this會指向全域性物件
var obj =
c:function()
}}obj.b(
);obj.c(
)();
4.箭頭函式當方法使用的時候沒有定義this的繫結
箭頭函式在定義之後,this的值就不會發生改變,無論用什麼方式呼叫它,this的值都不會發生改變。
其原因在於:箭頭函式不會自動繫結區域性變數,如this,arguments,super(es6),new.target(es6)等。所以箭頭函式沒有它自己的this的值,箭頭函式內的this的值繼承自外圍作用域。在箭頭函式中呼叫this時,僅僅是簡單的沿著作用域鏈向上尋找,找到最近乙個this的值拿來使用。
const button = document.
getelementbyid
('mybutton');
button.
addeventlistener
('click',(
)=>
);
var obj =
;return f.
call
(c,n);}
}console.
log(obj.b(
1));
//11
6.箭頭函式沒有原型函式
vara=
()=>
functionb(
)console.
log(a.prototype)
;//undefined;
console.
log(b.prototype)
;//object
7.箭頭函式不能當做generator函式,不能使用yield關鍵字
8.箭頭函式不能換行
vara=
()=>1;
//syntaxerror:unexpected token
箭頭函式和普通函式的區別
面試時被問到箭頭函式和普通函式的區別。借用別人的乙個栗子 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 ...