JavaScript中的匿名函數(shù)和閉包是什么?

之前在學(xué)編譯原理的時(shí)候接觸過(guò)閉包這個(gè)概念,就是一組數(shù)據(jù)中所有數(shù)據(jù)的任意組合為閉包,然而突然看到與匿名函數(shù)放在一起了,感覺(jué)應(yīng)該不是那個(gè)意思,所以就了解了一下。

匿名函數(shù)就是沒(méi)有名字的函數(shù),閉包是可訪問(wèn)一個(gè)函數(shù)作用域里變量的函數(shù)。

匿名函數(shù)

  • 一般函數(shù)的創(chuàng)建:
function a(){
     return  1;
}
  • 匿名函數(shù)的創(chuàng)建:
    匿名函數(shù)有兩中創(chuàng)建方式,第一種就是將它賦值給一個(gè)變量:
var b = function(){
     return  1;
}

第二種可以用自執(zhí)行的方法:

(function(){
     return  1;
})()

匿名函數(shù)最大的用途是創(chuàng)建閉包(這是JavaScript語(yǔ)言的特性之一),并且還可以構(gòu)建命名空間,以減少全局變量的使用。

閉包

創(chuàng)建閉包的常見(jiàn)的方式,就是在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù),通過(guò)另一個(gè)函數(shù)訪問(wèn)這個(gè)函數(shù)的局部變量。

 function a(){
        var name='hello world';
          return function (){     //通過(guò)匿名函數(shù)返回a()局部變量 
              return name; 
          }
}
  • 使用閉包的好處:
    1 . 使用閉包可以把局部變量駐留在內(nèi)存中,可以避免使用全局變量。
    2 . 加強(qiáng)封裝性,可以達(dá)到對(duì)變量的保護(hù)作用。
  • 使用閉包的缺點(diǎn):
    1 . 由于閉包內(nèi)部變量?jī)?yōu)先級(jí)高于外部變量,所以多查找作用域鏈中的一個(gè)層次,就會(huì)在一定程度上影響查找速度。
    2 . 由于閉包里作用域返回的局部變量資源不會(huì)被立刻銷(xiāo)毀回收,所以可能會(huì)占用更多的內(nèi)存。
    過(guò)度使用閉包會(huì)導(dǎo)致性能下降,所以還是慎用吧。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容