JS閉包

image.png

閉包

關(guān)于閉包這個(gè)問(wèn)題,我已經(jīng)反復(fù)接觸過(guò)好多次了,有好次面試,都有被提問(wèn)到,自己總是了解的不通透。這次針對(duì)幾個(gè)問(wèn)題做一下整理,避免自己后面又忘記了。

什么是閉包?

關(guān)于閉包 不同的權(quán)威上面有不同的定義,這里我就記錄一下我理解比較深刻的一種定義。

閉包就是指內(nèi)部函數(shù)總是可以訪問(wèn)其所在的外部函數(shù)中聲明的變量和參數(shù)。

為什么說(shuō)所有的js函數(shù)都可以稱為閉包?

對(duì)于js函數(shù)而言,它都有一個(gè)隱藏屬性[[Environment]],該隱藏屬性可以引用該函數(shù)所被創(chuàng)建時(shí)的詞法環(huán)境(也就是說(shuō)可以訪問(wèn)函數(shù)所被創(chuàng)建時(shí)所在作用域的參數(shù)以及變量)

閉包都有哪些用途?

(1)當(dāng)我們想要訪問(wèn)函數(shù)內(nèi)的局部變量時(shí),又不想將該結(jié)果暴露為全局作用域中時(shí),就可以通過(guò)閉包將這個(gè)變量進(jìn)行返回,從來(lái)達(dá)到保護(hù)該變量不被外界污染的目的。

 function getName() {
      let name = 'year'
      return () => {
        return name
      }
    }

  console.log(getName()())

...今天就暫時(shí)先寫(xiě)這么多,準(zhǔn)備下班了。

最后編輯于
?著作權(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ù)。

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