最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Javascript中帶名匿名箭頭函數(shù)的重要區(qū)別(推薦)

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 20:25:57
文檔

Javascript中帶名匿名箭頭函數(shù)的重要區(qū)別(推薦)

Javascript中帶名匿名箭頭函數(shù)的重要區(qū)別(推薦):帶名函數(shù)是指函數(shù)顯示地給出了一個名字的函數(shù),function abs(x){}。匿名函數(shù)是指函數(shù)只帶有function這個關(guān)鍵字,而沒有像abs這種函數(shù)名稱的函數(shù),如function(){}。ES6標(biāo)準(zhǔn)新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))箭頭函數(shù)表面上相當(dāng)于匿名函數(shù),
推薦度:
導(dǎo)讀Javascript中帶名匿名箭頭函數(shù)的重要區(qū)別(推薦):帶名函數(shù)是指函數(shù)顯示地給出了一個名字的函數(shù),function abs(x){}。匿名函數(shù)是指函數(shù)只帶有function這個關(guān)鍵字,而沒有像abs這種函數(shù)名稱的函數(shù),如function(){}。ES6標(biāo)準(zhǔn)新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))箭頭函數(shù)表面上相當(dāng)于匿名函數(shù),

帶名函數(shù)是指函數(shù)顯示地給出了一個名字的函數(shù),function abs(x){}。匿名函數(shù)是指函數(shù)只帶有function這個關(guān)鍵字,而沒有像abs這種函數(shù)名稱的函數(shù),如function(){}。ES6標(biāo)準(zhǔn)新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))箭頭函數(shù)表面上相當(dāng)于匿名函數(shù),并且簡化了函數(shù)定義。它們各自的區(qū)別是什么呢?

1 帶名和匿名函數(shù)的區(qū)別

區(qū)別:匿名函數(shù)需要講地址賦值給另一個變量let a,然后再用a來調(diào)用函數(shù);而帶名函數(shù)因為顯示地給出了函數(shù)名稱,所以可以直接用這個函數(shù)名稱調(diào)用。

帶名函數(shù)返回值是函數(shù)體內(nèi)的返回值,如abs(x)函數(shù)的返回值是number變量。函數(shù)調(diào)用時,直接abs(6)調(diào)用,這個非常好理解。

function abs(x){
 if(x>=0){
 return x;
 }else{
 return -x;
 }
}

但是匿名函數(shù)呢?如下所示,函數(shù)未顯示地給出一個函數(shù)名稱,但是此處的abs被賦值為這個匿名函數(shù)的地址,所以使用時可以直接用abs(-3),諸如此類的調(diào)用。

let abs=function(x){
 if(x>=0){
 return x;
 }else{
 return -x;
 }
}

2 箭頭函數(shù)

ES6標(biāo)準(zhǔn)新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))。為什么叫Arrow Function?因為它的定義用的就是一個箭頭。箭頭函數(shù)表面上相當(dāng)于匿名函數(shù),并且簡化了函數(shù)定義。

箭頭函數(shù)有兩種格式,一種是只包含一個表達式,連{ … }和return都省略掉了。

x => x * x

上面的箭頭函數(shù)相當(dāng)于一個匿名函數(shù)“”

function (x) {
 return x * x;
}

還有一種可以包含多條語句,這時候就不能省略{ … }和return:

(x,y) => {
 if (x > 0) {
 return x + y;
 }
 else {
 return -x + y;
 }
}

3 箭頭函數(shù)和匿名函數(shù)的不同

箭頭函數(shù)看上去是匿名函數(shù)的一種簡寫,但實際上,箭頭函數(shù)和匿名函數(shù)有個明顯的區(qū)別:箭頭函數(shù)內(nèi)部的this是詞法作用域,由上下文確定。

調(diào)用函數(shù)obj1.getAge(2017)和調(diào)用obj2.getAge(2017)會得到相同的結(jié)果嗎?

obj1中fn函數(shù),由于JavaScript函數(shù)對this綁定的錯誤處理,得不到預(yù)期的結(jié)果,this.birth指向window或undefined。

但是obj2,fn函數(shù)是箭頭函數(shù),箭頭函數(shù)完全修復(fù)了this的指向,this總是指向詞法作用域,也就是外層調(diào)用者obj2。

var obj1 = {
 birth: 1990,
 getAge: function (year) {
 let fn=function(y){
 return y - this.birth; // this指向window或undefined
 };
 return fn(year);
 }
};
var obj2 = {
 birth: 1990,
 getAge: function (year) {
 var fn = (y) => y - this.birth; // this.birth為1990
 return fn(year);
 }
};

4 總結(jié)

和帶名函數(shù)相比,匿名函數(shù)需要講地址賦值給另一個變量let a,然后再用a來調(diào)用函數(shù);和匿名函數(shù)比,箭頭函數(shù)完全修復(fù)了this的指向,this總是指向詞法作用域。

以上所述是小編給大家介紹的Javascript中 帶名 匿名 箭頭函數(shù)的重要區(qū)別,希望對大家有所幫助,如果有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!

更多Javascript中 帶名 匿名 箭頭函數(shù)的重要區(qū)別(推薦)相關(guān)文章請關(guān)注PHP中文網(wǎng)!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Javascript中帶名匿名箭頭函數(shù)的重要區(qū)別(推薦)

Javascript中帶名匿名箭頭函數(shù)的重要區(qū)別(推薦):帶名函數(shù)是指函數(shù)顯示地給出了一個名字的函數(shù),function abs(x){}。匿名函數(shù)是指函數(shù)只帶有function這個關(guān)鍵字,而沒有像abs這種函數(shù)名稱的函數(shù),如function(){}。ES6標(biāo)準(zhǔn)新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))箭頭函數(shù)表面上相當(dāng)于匿名函數(shù),
推薦度:
標(biāo)簽: 匿名 函數(shù) javascript
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top