亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js閉包作用域

js閉包作用域

眼眸繁星 2018-10-02 11:07:41
最近在看設計模式中,遇到一個關于閉包的問題,有點想不通啊,求助,代碼如下:function foo(){    var a = 10;    function bar(){        a*= 2;        return a;    }    return bar;}var baz = foo();console.log(baz.toString());var blat = foo();console.log(blat.toString());console.log(baz==blat)打印出來的結果:后來,我用單獨寫了一個函數:function b (){     var tt = 10;        return tt++ } var aa = b; var cc = b; console.log(aa.toString()); console.log(cc.toString()); console.log(aa==cc)打印出來結果:對于第二段的代碼,我可以理解,因為函數也是對象,aa和cc都指向同一個引用地址, 但是為啥第一段代碼,在閉包中,baz和blat不也是指向同一個引用嘛?為啥不相等?求大神指點
查看完整描述

2 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

第一段代碼指向的不是同一個引用,你調用了兩次foo,每次調用都會新定義一個bar函數

查看完整回答
反對 回復 2018-10-08
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

var baz = foo();

var blat = foo();

內部是return的一個方法,然而,baz = foo();相當于已經運行了一次,

每一次運行都return的是一個新的方法


查看完整回答
反對 回復 2018-10-08
  • 2 回答
  • 0 關注
  • 625 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號