(function()
{
   //代码
})();
我刚学javascript,以上代码的定义我怎么也不明白是什么意思,在function这个函数的定义前后加(),请各请帮忙解释下,谢谢!

解决方案 »

  1.   

    你一般定一个函数,比如说function A(){}
    那你调用的时候是A()才执行同样的,加()表示立即执行
      

  2.   

    噢,多谢,那请问在一个函数function之前加一个SetHome:或其它标识符然后再加个:号起什么作用啊.
    比如说:
    JsLoader:function(d,a,e,c)
    {}
    SetKey:function(c,a)
    {}
    JsLoader:和SetKey:分别代表什么意思啊?
      

  3.   


    比如
    funtion a(){
     return "a";
    }
    这个是个函数function b(){
     return function(){
       return ("a");
     }
    }
    执行var a1=a() 的时候,得到的是"a"
    ,执行var b1=b() 的时候,得到的是一个function的回调,这时候你执行var c=b1(),就相当于你执行var c=a()这样
    所以写成function(){return function(){}}() 这样也是,因为里面是个回调的函数,函数执行的话需要()
    不知这样说是否明白2. JsLoader:function(d,a,e,c) 
    {} 
    等于 function JsLoader:function(d,a,e,c){}
      

  4.   

    第一个是自执行的匿名函数,可以用来命名namespcce
    第二情况一般用在对象的定义中,obj = {
    name: function (){};//定义对象的属性name
    }可以通过obj.name();调用定义的方法
      

  5.   


    打错了
    2.等于function JsLoader(d,a,e,c){}
      

  6.   

    (function(){
    alert("aa");
    })();//直接显示aa
    function test(){
         alert("bb");
    }
    (test)();///没有脚本错误,显示bb,语法极像方法调用methodName();
    (test())();//没有脚本步错误,显示bb
    1楼的看起来解释的不错,本人认为这种语法能够立即执行正是体现了脚本(解释性)语言的特性--任何声明都是对象,function(){
    alert("aa");
    }它本身的原型(prototype)就是从Function对象来的,故这段代码反映了此对象的type是function,就像test方法,解释器并不会整体去看test()而是先去查找identifier(标示)为test的类型,然后再决定下一步该怎么执行,如果type是function那么标示+括弧就会执行,否则按其他类型进行处理,另外要考虑此匿名函数之外的括弧,在计算机语言里边括弧的优先级别相当高,故这一点也相当重要
    再看看('000')();//没有脚本错误,'000'
    (a='000')();//也不会有脚本错误
    总结:(statement)();只要statement是对象是null,undefined也没关系,因为在js里边null和undefined可以表示boolean
      

  7.   

    首先
    functoin(){} 返回一个函数入口点,然后你可以把函数入口点传给一个变量,如 var foo=function(){},
    你可以通过在入口点foo后边加括号调用,,如foo(),所以 你可以直接函数入口点后边加括号调用,再根据括号的优先原则就变成了(function(){})()
      

  8.   

    (function() 

      //代码 
    })();  这是js中的闭包,可以网上查下js闭包的知识