日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Javascript的獨(dú)特的概念之閉包

瀏覽:320日期:2022-06-03 09:49:06
目錄
  • Javascript閉包簡介:
  • 為什么是閉包:
  • 總結(jié)

Javascript閉包簡介:

Javascript語言中,有一個(gè)獨(dú)特的概念:閉包(closure),這在類似C++,Java等編程語言中沒有這個(gè)概念。很多高級應(yīng)用都要依靠閉包實(shí)現(xiàn)。

為什么是閉包:

或者說,為什么需要閉包,閉包的作用到底是什么?要理解這個(gè)概念,首先要理解Javascript中的作用域。

閉包的作用域:

和Java,C/C++等高級編程語言一樣,Javascript也有作用域這個(gè)概念。但是,相比而言,它們有很大的區(qū)別。

1). 變量的標(biāo)識:Java,C/C++等編程語言是強(qiáng)類型語言,即變量的聲明需要用類型來標(biāo)識(無論是普通類型,還是自定義類型)。

而Javascript語言是弱類型語言,即不需要用具體的類型來標(biāo)識變量(例如,只需要用var/let,或者都不需要用它們來標(biāo)識)。

2). 變量的作用域:

Javascript:函數(shù)內(nèi)部可以直接讀取全局變量;在函數(shù)外部無法訪問函數(shù)內(nèi)的局部變量。

函數(shù)內(nèi)部聲明的變量,一定要用var來標(biāo)識;如果一個(gè)變量沒有標(biāo)識,則這個(gè)變量實(shí)際上是一個(gè)全局變量。

例如:

var x=10;
  function fun1(){
       var y = 20;
       z = 30;
    console.log(x); //success
  }
   fun1()
    //console.log(y);  //error:Uncaught ReferenceError: y is not defined。 
//分析:y是fun1的內(nèi)部變量,在函數(shù)外部方法fun1的內(nèi)部變量y
    console.log(z);  //success:z實(shí)際上是全局變量

運(yùn)行結(jié)果:

10

30

10 

閉包的概念以及使用:

可以將閉包理解為: 一個(gè)擁有許多變量和綁定了這些變量的環(huán)境的表達(dá)式(通常是一個(gè)函數(shù)),因而這些變量也是該表達(dá)式的一部分。

例如:

function fun2(){
   var x=100;
   function fun3(){
     console.log(x); 
   }
   return fun3;
 }
 var result=fun2();
 result(); //success,輸出100

這就是一個(gè)閉包的例子。fun2函數(shù)的返回值賦給result,再執(zhí)行result(),從而訪問到fun2中的fun3函數(shù)的代碼。 

有時(shí),我們需要能夠訪問到函數(shù)內(nèi)的局部變量,這時(shí),就需要用閉包來實(shí)現(xiàn)。例如,

function fun4(){
    var x=100;
       iAddOne = function(){
 x=x*x;
       }
    function fun_41(){
      console.log(x);
    }
    return fun_41;
  }
  var res=fun4();
    res(); // 10
    iAddOne();
    res(); // 11

運(yùn)行結(jié)果:

100

10000

可見,這里,閉包是一個(gè)函數(shù)。

閉包的另外一個(gè)作用是:

讓閉包表達(dá)式的變量始終保存在內(nèi)存中。因?yàn)?ldquo;變量也是該表達(dá)式的一部分”,所以,在函數(shù)外部擁有來這個(gè)閉包表達(dá)式,就相當(dāng)于擁有來表達(dá)式中的變量。

只有在”擁有表達(dá)式的函數(shù)“的生命周期結(jié)束,閉包的生命周期也隨之結(jié)束。

閉包還可以凈化命名空間。

Javascript的一大糟粕就是命名空間沖突。

在C++中,使用using namespace 來進(jìn)行命名空間的聲明和使用;

在java語言中,用import packagename來進(jìn)行區(qū)別。

而在Javascript中,卻沒有這樣的機(jī)制。這樣,很容易引起類似“同名方法的多處定義和引用”而帶來的問題。

因此,有了閉包,在某種程度上,可以減緩這類問題。即內(nèi)部函數(shù)名稱相同,但是外部函數(shù)可以不同名字就行。

例如:

function fun_test() {
   function fun1(){
   var x=100;
   function fun_common(){
     console.log(x); 
   }
   return fun_common;
 }
function fun2(){
   var y=200;
   function fun_common(){
     console.log(y); 
   }
   return fun_common;
 }
  var result1=fun1();
  result1(); //success,輸出100
  var result2=fun2();
  result2(); //success,輸出200
}

運(yùn)行結(jié)果:

100

200
 

可見, fun_common分別在fun1和fun2函數(shù)中有定義,在fun_test中可以正確訪問到它們。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注的更多內(nèi)容!  

vv

標(biāo)簽: CSS HTML
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩在线观看不卡| 欧美日本不卡| 欧美影院三区| 日韩一区网站| 成人午夜在线| 亚洲精品高潮| 日本а中文在线天堂| 91久久午夜| 老牛国内精品亚洲成av人片| 六月婷婷综合| 91伊人久久| 99久久久久国产精品| 国产精品色婷婷在线观看| 丝袜美腿一区| 国产精品日韩精品中文字幕| 日本一二区不卡| 国产免费播放一区二区| 久久蜜桃av| av最新在线| 国产亚洲观看| 蜜臀91精品一区二区三区| 国产一区二区三区天码| 青草国产精品| 在线视频亚洲欧美中文| 国产精品97| 97精品国产一区二区三区 | 卡一精品卡二卡三网站乱码| 亚洲在线观看| 国产精品成人a在线观看| 热久久久久久久| 亚洲一二三区视频| 精品国产aⅴ| 免费精品视频| 六月婷婷一区| 夜鲁夜鲁夜鲁视频在线播放| 午夜精品福利影院| 黑丝美女一区二区| 精品久久网站| 日韩黄色在线观看| 日韩午夜免费| 欧美99久久| 欧美成a人免费观看久久| 国产伦精品一区二区三区千人斩| 日韩另类视频| 国产精品99精品一区二区三区∴ | 日韩综合一区| 日本欧美在线| 亚洲资源网站| 在线免费观看亚洲| 石原莉奈一区二区三区在线观看| 日韩一区亚洲二区| 国产精品66| 国产成人精品福利| 免费在线播放第一区高清av| 日韩国产欧美三级| 日韩av资源网| 国产精品嫩草影院在线看| 国产精品一区毛片| 日本精品黄色| 亚洲午夜av| 六月婷婷一区| 亚洲精品国产精品粉嫩| 亚洲精品在线a| 国产精品午夜一区二区三区| 精品深夜福利视频| 欧洲av不卡| 久久亚洲美女| 欧美aa在线视频| 国产盗摄——sm在线视频| 久久久久久自在自线| 日本久久黄色| 精品国产中文字幕第一页| 九一国产精品| 久久久噜噜噜| 天堂俺去俺来也www久久婷婷| 97精品97| 日韩av中文字幕一区二区三区| 国产欧美啪啪| 国产一区三区在线播放| 国产拍在线视频| 视频一区中文字幕| 国产69精品久久| 亚洲a成人v| 精品丝袜在线| 国产极品嫩模在线观看91精品| 影视先锋久久| 精品美女在线视频| 日韩在线观看一区二区三区| 日韩中文影院| 久久伊人久久| 日本久久二区| 亚洲一区av| 国产精品一区二区99| 综合欧美精品| 午夜久久99| 天堂资源在线亚洲| 91看片一区| 国产精品成人a在线观看| 国产精品一区二区美女视频免费看| 欧美日韩国产观看视频| 国产精品入口久久| 日韩在线精品| 99视频精品全国免费| 亚洲一区日韩| 久久婷婷激情| 精品一区二区男人吃奶| 国产成人精选| 日本中文字幕不卡| 精品成人免费一区二区在线播放| 视频一区中文字幕国产| 黑人精品一区| 久久99精品久久久野外观看| 日韩午夜电影| 国产欧美日韩| 久久久一本精品| 国产精品久一| 天堂精品久久久久| 亚洲少妇一区| 欧美日韩精品一本二本三本| 成人在线视频免费看| 国产精品第一国产精品| 亚洲男人在线| 欧美中文日韩| 中国女人久久久| 激情婷婷亚洲| 久久九九电影| 亚洲午夜视频| 激情综合网五月| 91超碰国产精品| 久久男人av资源站| 国产suv精品一区| 国产一区二区三区日韩精品| 国产精品久久| 国产精品一区二区免费福利视频| 日韩精彩视频在线观看| 视频在线观看一区| 蜜臀精品一区二区三区在线观看| 好吊日精品视频| 中文不卡在线| 午夜久久av| 国产精品久久久久9999高清| 麻豆中文一区二区| 精品国产精品久久一区免费式| 日本久久综合| av资源中文在线| 久久精品在线| 石原莉奈在线亚洲二区| 日韩精品1区2区3区| 国产激情精品一区二区三区| 久久精品国产久精国产| 欧美激情另类| 影音先锋久久| 国产精品久久久久久久久久白浆| 97人人精品| 天堂av在线一区| 国产精品扒开腿做爽爽爽软件| 精品久久福利| 鲁大师影院一区二区三区| 欧美日韩va| 欧美好骚综合网| 亚洲精品激情| 国产一区二区三区四区五区| 婷婷亚洲五月| 国产日本久久| 亚洲手机视频| 国产精品成人一区二区网站软件| 日产精品一区| 欧美日韩夜夜| 五月天综合网站| 精品精品国产三级a∨在线| 国产精品普通话对白| 欧美日韩亚洲三区| 国产专区一区| 美女视频黄免费的久久| 播放一区二区| 久久99性xxx老妇胖精品| 亚洲一区国产| 四虎4545www国产精品 | 亚洲精品成人图区| 中文字幕成人| 欧美影院三区| 91综合网人人| 免费观看久久av| 国产精品地址| 日韩成人午夜精品| 丝瓜av网站精品一区二区| 另类欧美日韩国产在线| 午夜性色一区二区三区免费视频| 1024精品一区二区三区| 国产成人精品亚洲线观看| 国产欧美日韩视频在线| 亚洲一区日韩| 欧美精品激情| 欧美 日韩 国产精品免费观看| 精品久久精品| 国产黄大片在线观看| 国产精品福利在线观看播放| 麻豆精品久久久| 久久av网站| 国内自拍视频一区二区三区|