閉包筆記

########js鏈?zhǔn)阶饔糜颍?br> 1、子對(duì)象會(huì)一級(jí)一級(jí)向上尋找父對(duì)象的變量,父對(duì)象的所有變量,對(duì)子對(duì)象都是可見的
2、父對(duì)象無(wú)法獲取子對(duì)象內(nèi)的局部變量

########從外部讀取局部變量
方法:在函數(shù)的內(nèi)部,再定義一個(gè)函數(shù)。
內(nèi)部函數(shù)可以讀取外部函數(shù)的局部變量,那把內(nèi)部函數(shù)作為返回值,就可以在外部函數(shù)讀取內(nèi)部函數(shù)的變量了。

閉包

閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)
在立即執(zhí)行函數(shù)中

Paste_Image.png

在一個(gè)立即執(zhí)行函數(shù)中,有一個(gè)局部變量local,有一個(gè)函數(shù)foo,foo里面可以訪問(wèn)到local變量,這就是一個(gè)閉包。

function foo(){
  var local = 1;
  function bar(){
    local++;
    return local;
  }
  return bar;
}
var func = foo();
func();

這里,local變量和bar函數(shù)組成了一個(gè)閉包。
因?yàn)樾枰植孔兞?,所以把local放在一個(gè)函數(shù)里,函數(shù)套函數(shù)只是為了造出一個(gè)局部變量,與閉包無(wú)關(guān)。
return bar只是為了bar能被使用,也與閉包無(wú)關(guān)。

閉包用途

1、讀取函數(shù)內(nèi)部的變量
2、讓這些變量的值始終保持在內(nèi)存中

************我是分割線*******************************

例子:讓下面的函數(shù)輸出3

var fnArr = [];
for (var i = 0; i < 10; i ++) {    
    fnArr[i]=function(){
      return i;
    };
}
console.log( fnArr[3]() );//10
1、形成閉包:加入立即執(zhí)行函數(shù)
var fnArr = [];
for (var i = 0; i < 10; i ++) {
  (function(n){
    fnArr[i]=function(){
      return n;
    };
  })(i);    
}
console.log( fnArr[3]() );//3
2、形成閉包
var fnArr = [];
for (var i = 0; i < 10; i ++) {
  (function(){
    var n=i;
    fnArr[i]=function(){
      return n;
    };
  })();    
}
console.log( fnArr[3]() );
3、形成閉包
var fnArr = [];
for (var i = 0; i < 10; i ++) {
    fnArr[i] =(function(){
      var n=i;
      return function(){
        return n;
      }        
    })();       
}
console.log( fnArr[3]() );

此篇僅是看過(guò)的幾篇關(guān)于閉包文章的一個(gè)筆記而已,摘取了一些文章的精華記錄下來(lái):
https://zhuanlan.zhihu.com/p/22486908JS 中的閉包是什么?
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html學(xué)習(xí)Javascript閉包(Closure)

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

  • 作用域和閉包是 JavaScript 最重要的概念之一,想要進(jìn)一步學(xué)習(xí) JavaScript,就必須理解 Java...
    劼哥stone閱讀 1,244評(píng)論 1 13
  • ● 閉包基礎(chǔ) ● 閉包作用 ● 閉包經(jīng)典例子 ● 閉包應(yīng)用 ● 閉包缺點(diǎn) ● 參考資料 1、閉包基礎(chǔ) 作用域和作...
    lzyuan閱讀 1,036評(píng)論 0 0
  • 那是初夏的五月,他到杭州來(lái)看我。 五月的杭州,空氣里總是夾雜著濕漉漉的雨氣,西湖泛著淡淡的微波,不冷也不熱,不濕也...
    故逝閱讀 418評(píng)論 1 3
  • 正在看奶茶的一本書叫做《我敢在你懷里孤獨(dú)》。本書探討的是有關(guān)自處的事情,在這本書里我看到了自己的影子。 關(guān)于自處我...
    贏葉閱讀 180評(píng)論 0 0
  • 感恩單位組織志愿者活動(dòng),我可以和大家一起去社區(qū)清理垃圾。 感恩yz送我回單位,省了好多時(shí)間。 感恩又是周末了,開啟...
    毛毛細(xì)雨mmxy閱讀 200評(píng)論 0 0

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