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

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

從javascript一道閉包面試題說(shuō)開(kāi)去-創(chuàng)新互聯(lián)

這道題目比較經(jīng)典了:從javascript一道閉包面
試題說(shuō)開(kāi)去
var a = 1;
function test(){
    a= 2;
return function(){
        console.log(a);
    }
var a = 3;
}
test()();

當(dāng)時(shí)我回答出來(lái)了正確答案,但是在一系列追問(wèn)之下露出了狐貍的尾巴。答案是2

創(chuàng)新互聯(lián)公司長(zhǎng)期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東興企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),東興網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

我當(dāng)時(shí)認(rèn)為test執(zhí)行之后,a=2賦值給了全局,那么返回function時(shí)那里的a指的是window.a,就是2了。

實(shí)際上var a=3這一句是陷阱。 由于變量提升 a=2之前有一個(gè)var a的聲明,這里的a變成了局部的值。

那么返回函數(shù)為什么輸出2? 因?yàn)殚]包,外層的變量對(duì)內(nèi)部可見(jiàn)。

var a = 1;
function test(){
    a= 2; 
return function(){
        console.log(this.a);
    }
var a = 3;
}
test()();

加大一下難度,這里會(huì)輸出什么呢?

由于已經(jīng)知道var a=3是陷阱,而javascript的函數(shù)this默認(rèn)情況是window,so答案是1.

var name = "The Window";   
  var object = {   
    name :"My Object",   
    getNameFunc :function(){ 
          console.log(this.name);
      return function(){   
        console.log(this.name);  
     };   
    }   
};   
object.getNameFunc()();

這里輸出是

My Object

The Window.

閉包作用域在函數(shù){}內(nèi),this在閉包內(nèi)不能傳遞,改成下面這樣才能都輸出My Object.

 var name = "The Window";   
  var object = {   
    name :"My Object",   
    getNameFunc :function(){ 
          console.log(this.name);
var tmp= this;
      return function(){   
        console.log(tmp.name);  
     };   
    }   
};

本文標(biāo)題:從javascript一道閉包面試題說(shuō)開(kāi)去-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/ceoipi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部