js 自运行函数作用

var obj = new Object();
                
                function test2()
                {
                    for (var i=1;i<5;i++)
                    {
                        obj['f'+i] = function()
                        {
                            return i;
                        }
                    }
                    
                    alert(obj.f1());
                }
                
                test2();

 此段代码弹出内容为:5  为什么结果不像想象中的应该是 1 呢?

 下边方法可以解决这个问题:

var obj = new Object();
                
                function test2()
                {
                    for (var i=1;i<5;i++)
                    {
                        (function()
                        {
                            var index = i;
                            obj['f'+index] = function()
                            {
                                return index;
                            }
                        }());
                        
                    }
                    
                    alert(obj.f1());
                }
                
                test2();

 

posted @ 2016-10-28 16:15  MvloveYouForever  阅读(198)  评论(1编辑  收藏  举报