鍍金池/ 問答/HTML/ javascript中局部變量的相關(guān)問題。

javascript中局部變量的相關(guān)問題。

        function Person(){}                                    
        
        var person = new Person();//創(chuàng)建一個Person對象
        function fun(){
            var index = 0;
            //給person新建一個方法say
            person.run = function(){
                console.log(++index);//執(zhí)行對局部變量index的操作
            }
        }
        
        fun();//運行fun函數(shù)
        //循環(huán)執(zhí)行5次person的run方法
        for (var i = 0;i < 5;i++) {
            person.run();//結(jié)果輸出1,2,3,4,5
        }
    疑問:執(zhí)行完fun函數(shù)后,index局部變量不是銷毀了嗎?為什么person對象的run方法還可以操作index變量呢?

回答
編輯回答
陪我終

person.run函數(shù)的引用并沒有消失

2017年12月29日 05:52
編輯回答
話寡

內(nèi)部函數(shù),引用了外部函數(shù)的變量。
關(guān)于閉包的:JavaScript 作用域和閉包

2017年1月6日 09:00
編輯回答
櫻花霓

這不是閉包么。
當(dāng)你給person.run上添加一個function的時候,function里邊的變量就不會被銷毀,即使這個變量是外部函數(shù)的變量。

2018年9月19日 21:59
編輯回答
情未了

這是閉包。
給你個地址學(xué)習(xí)下:
https://developer.mozilla.org...https://developer.mozilla.org...

2018年5月17日 19:31