日期:2014-05-16  浏览次数:20358 次

第二段代码有哪些优势?
JScript code

            function oDemo()
            {
                function pr()
                {
                    for(var i=0;i<10;i++){}
                    return i;    //返回的i是10
                }
           return i;    //这里的i是未定义的
            }
            
       alert(oDemo());    //报错i未定义



JScript code

            function oDemo()
            {
                (function()
                {
                    for(var i=0;i<10;i++){}
                    return i;    //返回的i是10
                })()
                
                return i;    //这里的i是未定义的
            }
            
           alert(oDemo());    //报错i未定义



上面两段代码都可以达到私有化变量的效果,
那么,第二段代码的优势在哪?
求指点。。。。

------解决方案--------------------
没什么实质的差别,对oDemo这个函数来说结果都一样,但是要知道下面这个是 匿名函数的使用


(function() {
......
})()//匿名函数,匿名函数就是没有实际名字的函数.

(function(){ 
alert(333);
})(); //立即执行这个 匿名函数中的代码

运行下这个就清楚了
alert(typeof function(){});// "function" 

------解决方案--------------------
JS匿名函数的理解 参考:http://blog.csdn.net/zhaozheng7758/article/details/6168203
------解决方案--------------------
function oDemo()
{
function pr()
{
for(var i=0;i<10;i++){}
return i; //返回的i是10
}
 pr() //加了这句 就和你第二个一样的效果 只不过第二个是用的匿名函数而已
return i; //这里的i是未定义的
}

alert(oDemo()); //报错i未定义