真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JS閉包-創(chuàng)新互聯(lián)

JS作用域

JS的作用域可以分為全局作用域和局部作用域,全局變量可以在所有的腳本和函數(shù)中使用,而如果變量在函數(shù)中聲明的,則稱為局部作用域,局部作用域只能在函數(shù)內(nèi)部訪問

成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站10年經(jīng)驗(yàn)成就非凡,專業(yè)從事成都做網(wǎng)站、成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文發(fā)稿,1元廣告等。10年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:18982081108,我們期待您的來電!

1: 全局變量

2:局部變量:

 

JS閉包
我們說函數(shù)中定義的局部變量只能在函數(shù)中起作用,但是通過閉包可以將使函數(shù)使用別的函數(shù)中的局部變量,但是閉包會(huì)大量占用內(nèi)存 會(huì)導(dǎo)致網(wǎng)頁內(nèi)存泄露 ---所以一般盡量避免使用閉包
實(shí)例:

function f1(){
        var a=10;
        return a;
    }
    function f2(){
        console.log(f1());
    }
    f2();

上面實(shí)例中函數(shù)2中可以調(diào)用函數(shù)1中的變量a,輸出結(jié)果為10.
接下來舉一些函數(shù)方面的實(shí)例,方便更好的理解
1:

 

因?yàn)閠()函數(shù)是匿名函數(shù),沒有調(diào)用不會(huì)自己執(zhí)行,所以當(dāng)?shù)谝淮握{(diào)用f1()函數(shù)時(shí),t()函數(shù)不執(zhí)行,當(dāng)t()執(zhí)行后,a自加1,返回a等于2,于是第二次調(diào)用的時(shí)候就會(huì)得到a=2的結(jié)果,之后同理;而如果把調(diào)用函數(shù)改為

 var a1=f1();
a1();//1
t();
var a2=f1();  //重新執(zhí)行一遍
a2()//1

剛開始做這道題的時(shí)候,以為a2()中得到的結(jié)果是a=2,但是當(dāng)重新定義var a2=f1()時(shí),函數(shù)也會(huì)重新初始化,所以就算之前執(zhí)行過一次t()函數(shù),在重新初始化后與a2無關(guān)。
2:

var temp = "object";
(function () {
    console.log(temp);//undefined    //提前聲明
    var temp = "student";
    console.log(temp);//student
})();

這道題在我開始做的時(shí)候很難理解,第一個(gè)temp為什么會(huì)是undefinde一直糾結(jié)了很久,object是一個(gè)全局變量,而student則是函數(shù)中的一個(gè)局部變量,當(dāng)在函數(shù)中調(diào)用student的時(shí)候會(huì)覆蓋object,又因?yàn)楹瘮?shù)中的變量可以被提前聲明,本題就相當(dāng)于

var temp = "object";
   (function () {
         var  temp;
       console.log(temp);//undefined    //提前聲明
    var temp = "student";
    console.log(temp);//student
})();

所以第一個(gè)console.log(temp )的結(jié)果就為undefined,第二個(gè)的結(jié)果就為student

3:

 function f1() {
    var n = 999;
    return function f2() {
        return n;
    }
    }
   console.log(f1()());//999
  console.log(f1());//返回return后面的一堆

4:

(1)  var name="global";
              function foo(){
              console.log(name);
               }
              function fooOuter1(){
               var name="local";
               foo();
                 }
              fooOuter1();//global 

     (2)var name="global";
              function fooOuter2(){
                            console.log(name);//undefined
               var name="local";
                function foo(){
                    console.log(name);//local    局部函數(shù)取就近
                 }
                foo();
              }
              fooOuter2();//local

這兩個(gè)題很相近,但因?yàn)樽饔糜虻牟煌Y(jié)果截然相反,第一個(gè)題中因?yàn)楹瘮?shù)中的變量作用域只能作用在本函數(shù)中,而不能作用到其他函數(shù)中 ,所以在fooOuter1中調(diào)用foo函數(shù),foo無法調(diào)用fooOuter1中的變量,只能調(diào)用全局變量。而如果把題1換一個(gè)形式,用閉包,則得到結(jié)果為local

  var name="global";
                function foo(){
                var name="local";
                console.log(name);
                }
                function fooOuter(){
                foo();
                }
                fooOuter()//返回結(jié)果為local

而在題二中,因?yàn)槭窃诤瘮?shù)體中調(diào)用,函數(shù)體中的local會(huì)覆蓋global,所以會(huì)先調(diào)用local

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


名稱欄目:JS閉包-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://weahome.cn/article/djdieh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部