談?wù)剬?duì)JS基礎(chǔ)(閉包)的理解

? ? ? ? ? ? ? 概括:閉包就是一個(gè)函數(shù),捕獲作用域內(nèi)的外部綁定.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? 官方定義:一個(gè)擁有許多變量和綁定了這些變量環(huán)境的表達(dá)式(通常是一個(gè)函數(shù)),因?yàn)檫@些變量也稱為了這表達(dá)式的一部分(閉包實(shí)現(xiàn)了全局變量的累加? 模塊化的代碼? 減少了全局變量的污染)。

? ? ? ? 自由變量和閉包的關(guān)系:自由變量閉合于閉包的創(chuàng)建。

? ? ? ? 自由變量:如果一個(gè)函數(shù)內(nèi)部有其他函數(shù),那么這些內(nèi)部函數(shù)就可以訪問外部函數(shù)中聲明的變量(這些變量就稱之為自由變量).

? ? 高階函數(shù):返回另一個(gè)函數(shù)的函數(shù)成為高階函數(shù)。

? ? ? ? ? 閉包的優(yōu)點(diǎn):? 1.希望一個(gè)變量可以長(zhǎng)期駐扎在內(nèi)存中

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.避免全局變量的污染

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.私有成員的存在

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.私有成員的存在

? ? ? ? 閉包的缺點(diǎn)? ? :1.是常駐內(nèi)存

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.會(huì)增大內(nèi)存的使用量,使用不當(dāng)很容易造成內(nèi)容泄露


? ? ? 例:? ? function fn(){


? ? ? ? ? ? ? ? ? ? var a=10;

? ? ? ? ? ? ? ? function f1(){

? ? ? ? ? ? ? ? ? ? ? ? ? a++;

? ? ? ? ? ? ? console.log(a);

? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? return f1;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? var f=fn();

? ? ? ? ? ? ? f();

? ? ? ? ? ? ? f();

? ? ? ? ? ? ? f();

? ? ? ? ? 閉包的特性: 1.函數(shù)嵌套函數(shù)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.函數(shù)內(nèi)部可以引入外部的參數(shù)和變量

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.參數(shù)和變量不會(huì)被垃圾機(jī)制回收

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 閉包(closure)是Javascript語言的一個(gè)難點(diǎn),也是它的特色,很多高級(jí)應(yīng)用都要依靠閉包實(shí)現(xiàn)。 一、變量...
    zock閱讀 1,121評(píng)論 2 6
  • 閉包(closure)是Javascript語言的一個(gè)難點(diǎn),也是它的特色,很多高級(jí)應(yīng)用都要依靠閉包實(shí)現(xiàn)。 一、變量...
    zouCode閱讀 1,365評(píng)論 0 13
  • 前言 有很多人搞不清匿名函數(shù)和閉包這兩個(gè)概念,經(jīng)?;煊?。閉包是指有權(quán)訪問另一個(gè)函數(shù)作用域中的變量的函數(shù)。匿名函數(shù)就...
    cduyzh閱讀 643評(píng)論 3 7
  • 作用域和閉包是 JavaScript 最重要的概念之一,想要進(jìn)一步學(xué)習(xí) JavaScript,就必須理解 Java...
    劼哥stone閱讀 1,247評(píng)論 1 13
  • 時(shí)常覺得心煩 不想聽任何人的意見 不是因?yàn)楣虉?zhí) 任性 只是不想用別人的想法過完這一生 而我 會(huì)對(duì)自己負(fù)責(zé)到底 對(duì)...
    郭郭麗雪閱讀 117評(píng)論 0 0

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