javascript中局部变量的相关问题。

新手上路,请多包涵
        function Person(){}                                    
        
        var person = new Person();//创建一个Person对象
        function fun(){
            var index = 0;
            //给person新建一个方法say
            person.run = function(){
                console.log(++index);//执行对局部变量index的操作
            }
        }
        
        fun();//运行fun函数
        //循环执行5次person的run方法
        for (var i = 0;i < 5;i++) {
            person.run();//结果输出1,2,3,4,5
        }
    疑问:执行完fun函数后,index局部变量不是销毁了吗?为什么person对象的run方法还可以操作index变量呢?

阅读 1.9k
4 个回答

这不是闭包么。
当你给person.run上添加一个function的时候,function里边的变量就不会被销毁,即使这个变量是外部函数的变量。

person.run函数的引用并没有消失

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题