希望有大牛分析以下区别:(function(   ){
alert(1);
})()

===================================
(function(   ){
alert(1);
}(  ))
===============================================
以及以下三个的结果和它们的不同:
function(  ){
}( )function(  ){
}(1)(function(  ){
})(1 )

解决方案 »

  1.   

    function a() {} //定义一个具名函数
    function(){} //定义一个匿名函数
    (function(){})(); //定义一个匿名函数并立即执行他
    (function(){})(1); //定义一个匿名函数并立即执行他,后面小括号里是传递的参数
    其他的都是错误的语法
      

  2.   


    function( ){
    }(1)没有语法错误,js中;可以省略。所以以上语法是一个函数定义和(1)表达式。
    (function( ){
    alert(1);
    })()函数定义外的()是运算符,返回函数本身,然后后面()表示函数调用。
    (function( ){
    alert(1);
    }( ))里面的()表示函数调用,外面()是强制运算符,返回调用结果。
    function( ){
    }( )中function( ){
    }被作为独立的函数定义,后面()没有办法解释,所以无法通过语法检测。
    function( ){
    }(1)与上面的解释相似,只是(1)是可以解释成表达式的。所以上面的语句可以解释为
    function( ){
    };
    (1);
    (function( ){
    })(1 )应该与上面相同,空格应该会被忽略。以上内容是参考《javascript语言精髓与编程实践》p61(ps :挺好的一本书)
      

  3.   

    function( ){
    }( )
    相当于 functin aaa(){}  aaa();
    function( ){
    }(1)
    语法错误
    (function( ){
    })(1 )相当于 function aaa(arg1){}  aaa(1);
      

  4.   


    function( ){
    }( )
    为什么这里的()
    不能看成是调用呢
    而是所谓的强运算而这里的第2个括号
    (function( ){
    })( )
    又变成是 调用