var main = function(){};
function main(){}
都是定义一个函数, 请问它们的区别在哪里? 哪种好一些? 我如果做迭代运算, 用哪个好一点?

解决方案 »

  1.   

    var POBJ = new Object();
            POBJ.Show = function()
            {
                alert("Hello World!");  
            };        function MyClass()
            {   
                if(typeof(MyClass._initialized)== "undefined")
                {
                    //放在此处就不行了。
                      //MyClass.prototype = POBJ; 
                    
                    /*
                      这是方式也行,不过要是方法多的话,
                        直接定义好一个对象,然后一赋值更方便一些
                      MyClass.prototype.Show = function()
                    {
                        alert("Hello World!");
                    }
                    */
                    MyClass._initialized = true;
                }
            }
            //放在此处就行了
             MyClass.prototype = POBJ;    
            
            var obj = new MyClass();
            obj.Show();
      

  2.   

    第1个是给变量main赋值匿名函数对象
    第2个定义函数对象 main<script>
    alert(main);
    var main=function(){}//function main(){}
    </script>
      

  3.   

    从使用的角度两者没有什么区别。事实上他们产生的结果也都是一样的, 都产生了Function的实例,然后有变量名main指向它。
    但是你要做迭代, 觉得用第二种看起来要自然一些。
    就拿比较简单的情况:递归来做例子:
    这样写要自然多了
    function fab(n){
    if(n==1) return 1;
    else return n*fab(n-1);
    }
    要是这样写:
    var fab1 = function(n){
    if(n==1)return 1;
    else return n*fab1(n-1);
    }
    就会觉得明明是在定义变量, 怎么还用这个变量了。
      

  4.   

    1、预定义的区别,参见:http://www.jslab.org.cn/?tag=predefined2、如果 var xxx = funct yyy(){}; 那么将和 function yyy(){}的scope chain不一样,参见:http://www.jslab.org.cn/?tag=ScopeChainAndClosure
      

  5.   

    谢谢各位了. 
    最终思考, 觉得作为一个迭代的内部过程函数, 不需要预定义, 直接var func = function(){};定义就好了. 只要二者没有太大的效率差异就可以了~