成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端開發(fā)需要了解的知識(shí)之-閉包

jhhfft / 2351人閱讀

摘要:所以,父對(duì)象的所有變量,對(duì)子對(duì)象都是可見(jiàn)的,反之則不成立。參考資料阮一峰老師的學(xué)習(xí)閉包知乎上里的閉包是什么應(yīng)用場(chǎng)景有哪些

什么是閉包

用一句話概括:函數(shù)外部可以訪問(wèn)函數(shù)內(nèi)部的變量(不懂沒(méi)關(guān)系,請(qǐng)往下面看)

閉包的原理 javascript作用域

對(duì)于函數(shù)外部的變量,函數(shù)內(nèi)部可以訪問(wèn)

var n=1000;
function fn(){
    console.log(n);
}
fn();//輸出1000


對(duì)于函數(shù)內(nèi)部的變量,函數(shù)外部不可以訪問(wèn)
function fn(){
    var n=1000;
}
console.log(n)//n is not defined
如何從外部讀取內(nèi)部變量?
function fn(){
    var n=1000;
    function fn1(){
        return n;
    }
    return fn1;
}
var f=fn();
console.log(f());//1000

在上面的代碼中,函數(shù)fn1就被包括在函數(shù)fn內(nèi)部,這時(shí)fn內(nèi)部的所有局部變量,對(duì)f1都是可見(jiàn)的。但是反過(guò)來(lái)就不行,f1內(nèi)部的局部變量,對(duì)fn就是不可見(jiàn)的。這就是Javascript語(yǔ)言特有的"鏈?zhǔn)阶饔糜?結(jié)構(gòu)(chain scope),子對(duì)象會(huì)一級(jí)一級(jí)地向上尋找所有父對(duì)象的變量。所以,父對(duì)象的所有變量,對(duì)子對(duì)象都是可見(jiàn)的,反之則不成立。
既然f1可以讀取fn中的局部變量,那么只要把f1作為返回值,我們不就可以在fn外部讀取它的內(nèi)部變量了嗎!

閉包的應(yīng)用場(chǎng)景
//閉包自執(zhí)行
var foo=function fn(){
    var n=1000;
    return {
        get_n:function(){
            return n;
        },
        set_n:function(new_n){
            n=new_n;
        }
    }
}();
//foo.n  訪問(wèn)不了,undefined
foo.set_n(999);//通過(guò)接口可以設(shè)置內(nèi)部變量n
console.log(foo.get_n());//通過(guò)接口可以讀取內(nèi)部變量n


作者:甘洪翔
鏈接:https://www.zhihu.com/questio...
來(lái)源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
var Foo = function(){
      var name = "fooname";
      var age = 12;
      this.getName = function(){
          return name;
      };
      this.getAge = function(){
          return age;
      };
  };
  var foo = new Foo();

  foo.name;        //  => undefined
  foo.age;         //  => undefined
  foo.getName();   //  => "fooname"
  foo.getAge();    //  => 12
參考資料

阮一峰老師的:學(xué)習(xí)Javascript閉包(Closure)
知乎上:JavaScript 里的閉包是什么?應(yīng)用場(chǎng)景有哪些?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88205.html

相關(guān)文章

  • JavaScript - 收藏集 - 掘金

    摘要:插件開發(fā)前端掘金作者原文地址譯者插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡(jiǎn)單的方式。提供了與使用掌控異步前端掘金教你使用在行代碼內(nèi)優(yōu)雅的實(shí)現(xiàn)文件分片斷點(diǎn)續(xù)傳。 Vue.js 插件開發(fā) - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins譯者:jeneser Vue.js插件是為應(yīng)用添加全局功能的一種強(qiáng)大而且簡(jiǎn)單的方式。插....

    izhuhaodev 評(píng)論0 收藏0
  • Deep in JS - 收藏集 - 掘金

    摘要:今天同學(xué)去面試,做了兩道面試題全部做錯(cuò)了,發(fā)過(guò)來(lái)給道典型的面試題前端掘金在界中,開發(fā)人員的需求量一直居高不下。 排序算法 -- JavaScript 標(biāo)準(zhǔn)參考教程(alpha) - 前端 - 掘金來(lái)自《JavaScript 標(biāo)準(zhǔn)參考教程(alpha)》,by 阮一峰 目錄 冒泡排序 簡(jiǎn)介 算法實(shí)現(xiàn) 選擇排序 簡(jiǎn)介 算法實(shí)現(xiàn) ... 圖例詳解那道 setTimeout 與循環(huán)閉包的經(jīng)典面...

    enali 評(píng)論0 收藏0
  • JS筆記

    摘要:從最開始的到封裝后的都在試圖解決異步編程過(guò)程中的問(wèn)題。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。異步編程入門的全稱是前端經(jīng)典面試題從輸入到頁(yè)面加載發(fā)生了什么這是一篇開發(fā)的科普類文章,涉及到優(yōu)化等多個(gè)方面。 TypeScript 入門教程 從 JavaScript 程序員的角度總結(jié)思考,循序漸進(jìn)的理解 TypeScript。 網(wǎng)絡(luò)基礎(chǔ)知識(shí)之 HTTP 協(xié)議 詳細(xì)介紹 HTT...

    rottengeek 評(píng)論0 收藏0
  • 前端基礎(chǔ)

    摘要:談起閉包,它可是兩個(gè)核心技術(shù)之一異步基于打造前端持續(xù)集成開發(fā)環(huán)境本文將以一個(gè)標(biāo)準(zhǔn)的項(xiàng)目為例,完全拋棄傳統(tǒng)的前端項(xiàng)目開發(fā)部署方式,基于容器技術(shù)打造一個(gè)精簡(jiǎn)的前端持續(xù)集成的開發(fā)環(huán)境。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老鳥,不論是面試求職,還是日...

    graf 評(píng)論0 收藏0
  • javasscript - 收藏集 - 掘金

    摘要:跨域請(qǐng)求詳解從繁至簡(jiǎn)前端掘金什么是為什么要用是的一種使用模式,可用于解決主流瀏覽器的跨域數(shù)據(jù)訪問(wèn)的問(wèn)題。異步編程入門道典型的面試題前端掘金在界中,開發(fā)人員的需求量一直居高不下。 jsonp 跨域請(qǐng)求詳解——從繁至簡(jiǎn) - 前端 - 掘金什么是jsonp?為什么要用jsonp?JSONP(JSON with Padding)是JSON的一種使用模式,可用于解決主流瀏覽器的跨域數(shù)據(jù)訪問(wèn)的問(wèn)題...

    Rango 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<