日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
講解一下Javascript中的閉包

閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應(yīng)用都要依靠閉包實現(xiàn)。當(dāng)兩個函數(shù)發(fā)生嵌套,內(nèi)部函數(shù)使用外部函數(shù)的變量或者參數(shù)就會形成閉包。形成閉包之后,內(nèi)部函數(shù)的變量將會被保存在對應(yīng)的函數(shù)內(nèi)存中,不會像上面代碼中內(nèi)部函數(shù)變量被及時清除。

官方解釋說完后,我們先來看一個簡單計數(shù)的例子.

var c = 0;

function count(){

c++;

}

count();// 1

count();// 2

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

function count(){

var c = 0;

function add(){

 c++;

}

add();

}

count();// c = 1

count();// c = 1

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

function count(){

var c = 0;

function add(){

  c++;

}

return add;

}

var ct = count();

ct(); // c = 1

ct(); // c = 2

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

用閉包模擬私有方法

這有點像Java的私有方法或者私有變量,只能允許自己來操作!如果外部操作,就需要設(shè)定公開的方法來操作.

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())

這里應(yīng)該很容易理解了吧! 有點面向?qū)ο缶幊痰母杏X.當(dāng)然Javascript現(xiàn)在也有面向?qū)ο缶幊痰奶攸c.這點我們以后來說明.


名稱欄目:講解一下Javascript中的閉包
文章鏈接:http://www.5511xx.com/article/cddsoep.html