等大神解释,新人觉得 function(){}() 就和 (function(){})()一样了

解决方案 »

  1.   

    function(){}()  不能执行!会报错。
    匿名函数因本身无法调用,所以一般用于回调,或者变量赋值里,或者对函数返回值执行运算,如:    void function(){}();
        var a = function(){}();
        +function(){}();
        -function(){}();
        ~function(){}();
        !function(){}();
    而js中()表示执行括号内的代码,如(alert("a"))   或常常用的 a==1 && (a = 0);
    而(function(){})其实与function(){}()意思一样,但他们都是不能执行的,因为他们缺少函数名。
    但(function(){})()又不一样了,括号内定义了一个匿名函数并马上执行,有了意义。而且这个函数我们修改下可以多次调用:    (function(o){
            alert(o);
            return arguments.callee;
        })(1)(2)(3);
      

  2.   

        刚才看错了,以上两函数区别都不大,都是执行函数
        (function(){}()) //直接执行匿名函数,无法传参
        (function(){})() //先定义匿名函数再调用执行,可传入参数
      

  3.   

    (function(){}()) 和 (function(){})()没有什么区别。这么写的作用只有一个——不让function关键字出现在行首。一个函数后面的()实际上是执行函数的运算符。因为function(){}有两种用法。当function关键字出现在行首,它是一条“语句”,作为“语句”是没有返回结果的。所以不能用“语句”后面加()来执行函数当function关键字不是出现在行首,它就是一条“表达式”,作为“表达式”就有返回结果了。可以用“表达式”后面加()来执行函数为了不让function关键字出现在行首。
    除了(function(){}()) 和 (function(){})()
    还可以
    [function(){}()]
    ~function(){}()
    +function(){}()
    -function(){}()
    !function(){}()