最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js中的閉包學(xué)習(xí)心得

 更新時(shí)間:2018年02月06日 08:54:12   投稿:laozhang  
這篇文章主要介紹了js中的閉包學(xué)習(xí)心得以及重要點(diǎn)的代碼寫(xiě)法,對(duì)此有興趣的朋友跟著小編一起學(xué)習(xí)下吧。

閉包

按中文的意思就是關(guān)上一個(gè)包的意思。如果我們把函數(shù)的作用域當(dāng)做是一個(gè)包的話,那這個(gè)詞很形象體現(xiàn)了它的作用 。函數(shù)的正常的執(zhí)行流程是當(dāng)函數(shù)中的語(yǔ)句執(zhí)行完后,程序會(huì)自動(dòng)銷(xiāo)毀這個(gè)函數(shù)的作用域,但是當(dāng)一個(gè)函數(shù)中聲明了另一個(gè)函數(shù),并且這個(gè)子函數(shù)執(zhí)行時(shí)存在引用父函數(shù)的變量,就會(huì)形成閉包,形象點(diǎn)說(shuō)就相當(dāng)于把父函數(shù)的作用域給關(guān)閉了起來(lái),不讓程序去銷(xiāo)毀它。

例如:

function a() {
  var name = "xuxu";
  function b() {
    console.log(name);
  }
  // 此處產(chǎn)生閉包 
  b();
} 
a();

當(dāng)函數(shù)可以記住并訪問(wèn)它所在的作用域鏈時(shí),就產(chǎn)生了閉包 當(dāng)然,大部分的閉包都不是這么直觀的,因?yàn)樽雍瘮?shù)的調(diào)用是可以在父函數(shù)之外的,例如:

function a() {
  var name = "xuxu";
  function b() {
    console.log(name);
  }
  return b;
} 
var c=a();
// 此處產(chǎn)生閉包 此處的c函數(shù)其實(shí)就是a函數(shù)
c();

通過(guò)以上代碼,我們也可以看出一個(gè)閉包的好處,就是我們?cè)偃肿饔糜颍ù颂幨莣idow)下訪問(wèn)到了局部作用域(a函數(shù))的作用域的值,按正常的詞法作用域是無(wú)法這么做的,但是當(dāng)我們使用閉包是就可以了。然后我們?cè)倏匆稽c(diǎn)我們平時(shí)寫(xiě)的比較多的:

function foo() {
  var a = 2;
  function baz() {
     // 2
    console.log( a ); 
  }
  bar( baz );
}
function bar(fn) {
// 大家快看呀,這就是閉包!
  fn(); 
}

又或者

var fn;
function foo() {
  var a = 2;
  function baz() {
    console.log( a );
  }
  // 將baz分配給全局變量
  fn = baz; 
}
function bar() {
   // 大家快看呀,這就是閉包!
  fn();
}
foo();
// 2
bar(); 

以上也是閉包,因此在函數(shù)內(nèi)部調(diào)用子函數(shù),或者通過(guò)何種手段將內(nèi)部函數(shù)傳遞到所在的詞法作用域以外,它都會(huì)持有對(duì)原始定義作用域的引用,無(wú)論在何處執(zhí)行這個(gè)函數(shù)都會(huì)使用閉包。

相關(guān)文章

最新評(píng)論

三门县| 永登县| 贞丰县| 兴文县| 奉新县| 凤城市| 平遥县| 高尔夫| 彭山县| 保山市| 托克托县| 中牟县| 五大连池市| 光泽县| 永仁县| 渭源县| 德兴市| 右玉县| 昌黎县| 车险| 客服| 华安县| 桐柏县| 永安市| 荆州市| 通化市| 桂东县| 章丘市| 广宗县| 江油市| 七台河市| 朝阳市| 崇仁县| 读书| 鄂托克前旗| 定兴县| 咸阳市| 板桥市| 仲巴县| 亚东县| 瑞安市|