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

2021-08-04 07:43:50 字數 669 閱讀 7934

面試時被問到箭頭函式和普通函式的區別。。。

借用別人的乙個栗子:

function make () 

}var testfunc = make.call();

testfunc();

testfunc.call();

object 

object

可以看到箭頭函式在定義之後,this 就不會發生改變了,無論用什麼樣的方式呼叫它,this 都不會改變;

原因:箭頭函式不會自動繫結區域性變數,如this,arguments,super(es6),new.target(es6)等

所以箭頭函式沒有它自己的this值,箭頭函式內的this值繼承自外圍作用域。在箭頭函式中呼叫 this 時,僅僅是簡單的沿著作用域鏈向上尋找,找到最近的乙個 this 拿來使用

);

},...

}

在這裡,你希望在內層函式裡寫的是this.add(piece),不幸的是,內層函式並未從外層函式繼承this的值。在內層函式裡,this會是window或undefined,臨時變數self用來將外部的this值匯入內部函式。(另一種方式是在內部函式上執行.bind(this),兩種方法都不甚美觀。)這時候就可以使用箭頭函式來達到要求

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

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

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

一 箭頭函式全是匿名函式,普通函式也可以有匿名函式,也可以有具名函式。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 ...