欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談javascript的閉包

 更新時(shí)間:2017年01月23日 16:02:39   作者:amsolbfengfeng  
本文介紹了javascript閉包的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧

關(guān)于閉包的解釋

我們將作用域鏈描述為一個(gè)對(duì)象列表,不是綁定的棧。每次調(diào)用javascript函數(shù)的時(shí)候,都會(huì)為之創(chuàng)建一個(gè)新的對(duì)象來保存變量,把這個(gè)對(duì)象添那個(gè)加至作用域中,當(dāng)函數(shù)返回時(shí),就從作用域鏈中將這個(gè)綁定變量的對(duì)象刪除,如果不存在嵌套函數(shù),也沒有其他引用指向這個(gè)綁定的對(duì)象,它就會(huì)被當(dāng)垃圾回收掉,

 (function () {
 var val = null;
 var callback;
 setTimeout(function () {
  val = 1;
  callback(val)
 },1000)
 window.getVal = function(fn){
  callback = fn;
 }
 })();
 (function(){
 var b =3;
 getVal(function (val) {
  console.log(val);//1
  console.log(b); //3
 getVal(function (val) {
 console.log(val);
 console.log(b); //這里為什么還能打印出b這個(gè)變量呢/. 
 });
 //這里匿名函數(shù)其實(shí)就是一個(gè)閉包,你就相當(dāng)于通過getVal函數(shù)把這個(gè)閉包傳遞出去了,你想想看,閉包是不是這樣?
})();
//2作用域
 (function(){
 var b =3;
 var ret = function (val) {
  console.log(val);

利用閉包實(shí)現(xiàn)的私有屬性存取方法

 function c     
  return {
  count:function(){
  return n++;
  }
  };
  }
 var a=counter();
 alert(a.count());//返回的0;
 alert(a.count());//返回的是1;

定義的閉包實(shí)現(xiàn)的私有屬性方法

function addPrivateProperty(o,name,predicate){
var value;
o["get"+name]=function(){return value);}//get 存取器的屬性只讀,將其直接簡(jiǎn)單的返回
//setter方法檢驗(yàn)值是否合法,若不合法就拋出異常
o["set"+name]=function(v){{
if(predicate&&!predicate(v)) throw Error("");
else {
value=v;
}
}

典型錯(cuò)誤

function constfuncs(){
var funcs=[];
for(var i=0;i<10;i++){
funcs[i]=function(){return i;};
}
return funcs;
}
var func=constfuncs();
console.log(func[5]());
;//返回值? 10

由于此函數(shù)的閉包都是在同一個(gè)函數(shù)調(diào)用中定義的,因此可以共享變量i;

關(guān)聯(lián)到閉包的作用域鏈都是活動(dòng)的,嵌套的函數(shù)不會(huì)將作用域內(nèi)的私有成員復(fù)制一份,也不會(huì)對(duì)所綁定的變量生成靜態(tài)快照;在閉包時(shí)后this是javascript的一個(gè)關(guān)鍵字而不是變量

解決辦法

function Bb(){
this.run=function(){}//this就是Bb這個(gè)對(duì)象;
}
而function run(){
function gg(){alert(this就是window)}//this就是window;`
}

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • JavaScript實(shí)現(xiàn)替換字符串中最后一個(gè)字符的方法

    JavaScript實(shí)現(xiàn)替換字符串中最后一個(gè)字符的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)替換字符串中最后一個(gè)字符的方法,涉及javascript字符串的轉(zhuǎn)換與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • 使用Promise和JavaScript有效處理1000個(gè)請(qǐng)求的方法

    使用Promise和JavaScript有效處理1000個(gè)請(qǐng)求的方法

    在現(xiàn)代Web開發(fā)中,處理高并發(fā)請(qǐng)求是一個(gè)常見的挑戰(zhàn),當(dāng)我們需要從服務(wù)器獲取大量數(shù)據(jù)或執(zhí)行多個(gè)異步任務(wù)時(shí),如何有效地管理請(qǐng)求的并發(fā)性和性能變得至關(guān)重要,本文將介紹如何使用Promise和JavaScript來管理高并發(fā)請(qǐng)求,需要的朋友可以參考下
    2023-09-09
  • 詳解ES9的新特性之異步遍歷Async iteration

    詳解ES9的新特性之異步遍歷Async iteration

    在ES6中,引入了同步iteration的概念,隨著ES8中的Async操作符的引用,是不是可以在一異步操作中進(jìn)行遍歷操作呢?今天要給大家講一講ES9中的異步遍歷的新特性Async iteration。
    2021-06-06
  • JavaScript中數(shù)組sort()方法的基本使用與踩坑記錄

    JavaScript中數(shù)組sort()方法的基本使用與踩坑記錄

    : js中用方法sort()為數(shù)組排序,這篇文章主要給大家介紹了關(guān)于JavaScript中數(shù)組sort()方法的基本使用,sort()方法已經(jīng)可以滿足我們對(duì)數(shù)組的很多處理需求,需要的朋友可以參考下
    2021-06-06
  • JavaScript實(shí)現(xiàn)點(diǎn)擊自動(dòng)選擇TextArea文本的方法

    JavaScript實(shí)現(xiàn)點(diǎn)擊自動(dòng)選擇TextArea文本的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)點(diǎn)擊自動(dòng)選擇TextArea文本的方法,涉及javascript中focus()、select()方法的使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • js圖片切換具體實(shí)現(xiàn)代碼

    js圖片切換具體實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)圖片切換代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JavaScript生成簡(jiǎn)單等差數(shù)列

    JavaScript生成簡(jiǎn)單等差數(shù)列

    本文給大家分享使用for循環(huán)實(shí)現(xiàn)js生成簡(jiǎn)單的等差數(shù)列,具體實(shí)現(xiàn)方法,大家參考下本文
    2017-11-11
  • 利用百度地圖API獲取當(dāng)前位置信息的實(shí)例

    利用百度地圖API獲取當(dāng)前位置信息的實(shí)例

    下面小編就為大家?guī)硪黄冒俣鹊貓DAPI獲取當(dāng)前位置信息的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望對(duì)大家有所幫助
    2017-11-11
  • 精通JavaScript的this關(guān)鍵字

    精通JavaScript的this關(guān)鍵字

    這篇文章主要介紹了JavaScript的this關(guān)鍵字,真正幫助大家做到精通this關(guān)鍵字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 詳細(xì)聊聊TypeScript中unknown與any的區(qū)別

    詳細(xì)聊聊TypeScript中unknown與any的區(qū)別

    unknown類型比較謙虛,就和他本身的意思一樣,他從不禍害到其他的變量,但是any類型就是那種惡霸,屬于什么都不管,誰也不敢管的類型,這篇文章主要給大家介紹了關(guān)于TypeScript中unknown與any區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-10-10

最新評(píng)論