国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

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

2024-05-06 16:34:53
字體:
供稿:網(wǎng)友

帶名函數(shù)是指函數(shù)顯示地給出了一個名字的函數(shù),function abs(x){}。javascript/69642.html">匿名函數(shù)是指函數(shù)只帶有function這個關(guān)鍵字,而沒有像abs這種函數(shù)名稱的函數(shù),如function(){}。ES6標準新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))箭頭函數(shù)表面上相當于匿名函數(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標準新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))。為什么叫Arrow Function?因為它的定義用的就是一個箭頭。箭頭函數(shù)表面上相當于匿名函數(shù),并且簡化了函數(shù)定義。

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

x => x * x

上面的箭頭函數(shù)相當于一個匿名函數(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綁定的錯誤處理,得不到預期的結(jié)果,this.birth指向window或undefined。

但是obj2,fn函數(shù)是箭頭函數(shù),箭頭函數(shù)完全修復了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ù)完全修復了this的指向,this總是指向詞法作用域。

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


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 女性| 乌兰浩特市| 阿拉善盟| 积石山| 韶关市| 华亭县| 文化| 桂阳县| 昭通市| 高唐县| 襄城县| 汉沽区| 绥芬河市| 新邵县| 繁昌县| 平阳县| 巴里| 冷水江市| 大荔县| 英山县| 仪征市| 台中县| 南康市| 张家口市| 凤凰县| 鲁山县| 宝鸡市| 梁河县| 尼玛县| 措勤县| 静海县| 武安市| 舒兰市| 曲周县| 九龙县| 荆门市| 托里县| 乐平市| 昭平县| 东安县| 芜湖市|