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

輕松學習Javascript閉包函數

 更新時間:2022年05月06日 15:04:47   作者:喜愛編程的人  
這篇文章主要幫助大家輕松學習掌握Javascript閉包函數,從閉包的含義出發(fā),由淺入深學習Javascript閉包函數,感興趣的小伙伴們可以參考一下

閉包函數是什么?在開始學習的閉包的時候,大家很能都比較難理解.就從他的官方解釋來說,都是比較概念化的.

不過我們也還是從閉包的含義出發(fā)。
閉包是指函數有自由獨立的變量。換句話說,定義在閉包中的函數可以“記憶”它創(chuàng)建時候的環(huán)境。
官方解釋說完后,我們先來看一個簡單計數的例子.

var c = 0;
function count(){
c++;
}
count();// 1
count();// 2

這個例子是利用了全局變量來實現,但是這里有個問題是,c這個變量也容易被其他方式所調用,這時候就可能會改變 c 的存儲值.造成這個count計數的失效.那怎么很好的處理這個問題呢!我們會想到的是使用局部變量的方式來處理.比如:

function count(){
 var c = 0;
 function add(){
  c++;
 }
 add();
}
count();// c = 1
count();// c = 1

因為這樣創(chuàng)建之后,內部變量只存在于count函數創(chuàng)建執(zhí)行的時候,執(zhí)行完之后,整個函數就會被丟棄掉.就無法達到有記憶的能力.那要怎么來實現呢?那我們就用閉包來解決.我要重新提一次:閉包 = 函數 + 環(huán)境

function count(){
  var c = 0;
  function add(){
   c++;
  }
  return add;
}
var ct = count();
ct(); // c = 1
ct(); // c = 2

這個時候我們就可以通過這個閉包來完成計數的能力.ct就是一個閉包函數,內部的環(huán)境就是這個局部變量 c. 這里我們達到的就是內部數據,外部來操作.那閉包除了這個還有什么其他功能呢?

用閉包模擬私有方法
這有點像JAVA的私有方法或者私有變量,只能允許自己來操作!如果外部操作,就需要設定公開的方法來操作.

var person = (function(){
  var _name = "編程的人";
  var age = 20;
  return {
   add:function(){
     age++;
   },
   jian:function(){
     age--;
   },
   getAge:function() {
     return age;
   },
   getName:function(){
     return _name;
   },
   setName: function (name) {
     _name = name;        
   }
  }
})();
person.add();
var age = person.getAge();
console.log(age)
person.setName("編程的人公眾號:bianchengderen")
console.log(person.getName())

這里應該很容易理解了吧! 有點面向對象編程的感覺。當然Javascript現在也有面向對象編程的特點.這點我們以后來說明.
目前為止,我們從計數到內部私有化的例子,來說明閉包,希望大家能簡單明白其中的道理,當然閉包還有其他的功能利用是比較方便的。

以上就是本文的全部內容,希望對大家學習javascript程序設計有所幫助。

相關文章

最新評論

河曲县| 滨州市| 临沂市| 玛沁县| 双城市| 榆树市| 民权县| 沂水县| 闽清县| 金沙县| 仁寿县| 东安县| 浙江省| 兴业县| 邹城市| 晋宁县| 林周县| 治县。| 湖南省| 梨树县| 柳林县| 丹凤县| 汕尾市| 钟祥市| 永济市| 昌宁县| 南乐县| 深州市| 芒康县| 长泰县| 紫阳县| 邵阳市| 辛集市| 儋州市| 吴桥县| 揭阳市| 罗城| 潮州市| 和龙市| 特克斯县| 施甸县|