閉包混雜

1.什么是閉包

廣義的說(shuō)嫡秕,一個(gè)變量一個(gè)函數(shù)就形成了一個(gè)閉包丸凭,典型的說(shuō):一個(gè)父函數(shù),返回一個(gè)子函數(shù)茵瀑,子函數(shù)調(diào)用父元素的局部變量间驮,所以父函數(shù)的內(nèi)存不能夠釋放,所以可以拓展了作用域马昨。
借用于阮一峰老師的話:閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù) 鏈接地址
芳姐的閉包理解「函數(shù)」和「函數(shù)內(nèi)部能訪問(wèn)到的變量」(也叫環(huán)境)的總和竞帽,就是一個(gè)閉包。鏈接地址

簡(jiǎn)單的閉包
簡(jiǎn)單的閉包

2.經(jīng)典的閉包解析

var fn = function (){
      var local = "hello"
      function say(){
          return local
      }
      return say
}

解析

  1. 有時(shí)候看到在閉包中有立即執(zhí)行函數(shù)鸿捧,但是這個(gè)不是必須的屹篓,2個(gè)不同的概念不好弄混
為了省略一個(gè)變量的申明,我可以用一個(gè)立即執(zhí)行函數(shù)  
(function(){
     var local ='hello';
      function say(){
            return local
      }
      return say
})()
  1. 為什么要return一個(gè)函數(shù)呢匙奴?
    如果不返回return堆巧,我們?cè)趺丛L問(wèn)這個(gè)變量,閉包的作用就是隱藏變量的同時(shí)泼菌,又可以訪問(wèn)到這個(gè)變量谍肤,如果不return,我們可以用window來(lái)得到
(function(){
     var local ='hello';
      window.say = function (){
             local= local  +  'world'
             return local;
      }
})()
這樣也是一個(gè)閉包哗伯,一個(gè)函數(shù)訪問(wèn)了其他函數(shù)的局部變量荒揣。

3. 閉包的經(jīng)典運(yùn)用

  1. 修改代碼讓fnArri 輸出 i
  var fnArr = [];
    for (var i = 0; i < 10; i ++) {
        fnArr[i] =  function(){
            return i;
        };
    }
    console.log( fnArr[3]() ); 

主要是當(dāng)我們?cè)谡{(diào)用的時(shí)候,js加載完成焊刹,此時(shí)i存放在全局變量中系任,循環(huán)結(jié)束后的值是10,所以會(huì)一直輸出10
方法一:立即執(zhí)行函數(shù)和閉包

var fnArr = [];
for(var i =0;i<10;i++){
        fnArr[i]=(function (){
             var n =i 
             return function(){
                   return n;
              };
        })(i)
}

簡(jiǎn)化

var fnArr = [];
for(var i =0;i<10;i++){
        fnArr[i]=(function (n){
             return function(){
                   return n;
              };
        })(i)
}
var fnArr = [];
for(var i =0;i<10;i++){
        fnArr[i]=(function (){
            var n=i
             return function(){
                   return n;
              };
        })()   //這里不用傳遞參數(shù)
}

方法二: 閉包

var fnArr = [];
for(var i =0;i<10;i++){
 (function (){
        var n = i;
        fnArr[i]=function (){
                  return n
        }
})()
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虐块,一起剝皮案震驚了整個(gè)濱河市俩滥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌非凌,老刑警劉巖举农,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異敞嗡,居然都是意外死亡颁糟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門喉悴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)棱貌,“玉大人,你說(shuō)我怎么就攤上這事箕肃』橥眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵勺像,是天一觀的道長(zhǎng)障贸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吟宦,這世上最難降的妖魔是什么篮洁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮殃姓,結(jié)果婚禮上袁波,老公的妹妹穿的比我還像新娘。我一直安慰自己蜗侈,他們只是感情好篷牌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著踏幻,像睡著了一般枷颊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上该面,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天夭苗,我揣著相機(jī)與錄音,去河邊找鬼吆倦。 笑死听诸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚕泽。 我是一名探鬼主播晌梨,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼须妻!你這毒婦竟也來(lái)了仔蝌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荒吏,失蹤者是張志新(化名)和其女友劉穎敛惊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绰更,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瞧挤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年锡宋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片特恬。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡执俩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出癌刽,到底是詐尸還是另有隱情役首,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布显拜,位于F島的核電站衡奥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏远荠。R本人自食惡果不足惜矮固,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矮台。 院中可真熱鬧乏屯,春花似錦、人聲如沸瘦赫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)确虱。三九已至含友,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間校辩,已是汗流浹背窘问。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宜咒,地道東北人惠赫。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像故黑,于是被迫代替她去往敵國(guó)和親儿咱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 什么是閉包? 有什么作用閉包:函數(shù)對(duì)象可以通過(guò)作用域鏈相互關(guān)聯(lián),函數(shù)體內(nèi)部的變量可以保存在函數(shù)的作用域內(nèi)诗轻。 上述代...
    coolheadedY閱讀 727評(píng)論 0 0
  • 問(wèn)題 一、什么是閉包? 有什么作用吏颖? 閉包閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)搔体。在javascript中,只有函...
    婷樓沐熙閱讀 582評(píng)論 0 0
  • 都25歲的人了侦高,還是那么喜歡發(fā)神經(jīng)嫉柴。不知厌杜,這是為了什么奉呛?為了掩蓋內(nèi)心的孤獨(dú)?總是喜歡給別人炫耀些什么夯尽,可自己...
    碼農(nóng)甲乙丙閱讀 384評(píng)論 0 0
  • 數(shù)據(jù)類型: 一,原始類型: Number String Boolean null undefined二,引用類型 ...
    2點(diǎn)半閱讀 619評(píng)論 0 3
  • 絕對(duì)沒(méi)有一棵大樹(shù)是樹(shù)苗種下去瞧壮,馬上就變成大樹(shù),一定是歲月刻畫著年輪匙握,一圈圈往外長(zhǎng)咆槽!每當(dāng)遇到挫折和困難,讓我們看看大...
    peter_621f閱讀 163評(píng)論 0 0