国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

輕松學(xué)習(xí)Javascript閉包函數(shù)

2024-05-06 16:26:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要幫助大家輕松學(xué)習(xí)掌握J(rèn)avascript閉包函數(shù),從閉包的含義出發(fā),由淺入深學(xué)習(xí)Javascript閉包函數(shù),感興趣的小伙伴們可以參考一下
 

閉包函數(shù)是什么?在開(kāi)始學(xué)習(xí)的閉包的時(shí)候,大家很能都比較難理解.就從他的官方解釋來(lái)說(shuō),都是比較概念化的.

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

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

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

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

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

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

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

用閉包模擬私有方法
這有點(diǎn)像JAVA的私有方法或者私有變量,只能允許自己來(lái)操作!如果外部操作,就需要設(shè)定公開(kāi)的方法來(lái)操作.

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("編程的人公眾號(hào):bianchengderen")console.log(person.getName())

這里應(yīng)該很容易理解了吧! 有點(diǎn)面向?qū)ο缶幊痰母杏X(jué)。當(dāng)然Javascript現(xiàn)在也有面向?qū)ο缶幊痰奶攸c(diǎn).這點(diǎn)我們以后來(lái)說(shuō)明.
目前為止,我們從計(jì)數(shù)到內(nèi)部私有化的例子,來(lái)說(shuō)明閉包,希望大家能簡(jiǎn)單明白其中的道理,當(dāng)然閉包還有其他的功能利用是比較方便的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)javascript程序設(shè)計(jì)有所幫助。



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 五家渠市| 南丰县| 安丘市| 贵州省| 永修县| 綦江县| 栾城县| 兴仁县| 台中县| 同德县| 钟祥市| 文山县| 于田县| 左贡县| 安龙县| 崇州市| 托克逊县| 赣榆县| 武功县| 伊宁市| 平山县| 靖远县| 冀州市| 阿克陶县| 钟祥市| 白银市| 罗田县| 辽宁省| 焉耆| 西宁市| 绥阳县| 宁城县| 昭平县| 平陆县| 广丰县| 湘乡市| 宝兴县| 郁南县| 额济纳旗| 宜君县| 登封市|