看到jquery等很多js库都有这样的语法,这个语法有点怪异,第一对()符号是干嘛的,怎么理解?

解决方案 »

  1.   

    function() 相当于一个匿名函数,加()后就调用了它。这就是闭包的一个应用。好处有:
    1.可以随意的return, 要是直接写在script标签中,则不能。
    2.不会增加额外的命名空间。
    3.看起来也很干净,把代码都放到一个函数包去执行,不是散落在各地。请各位继续补充http://www.scriptlover.com/controls/
      

  2.   

    这和jQuery无关吧,JS的语法本身就是这样,匿名函数来的,其他语言里面也有很多类似的做法。
    有些代码只需要在特定的地方执行一次就行,又不需要反复调用,甚至连想函数名称的精力都可以省下来……
      

  3.   

    谢谢1.可以随意的return, 要是直接写在script标签中,则不能。 
    -----
    这点不大理解。function() 相当于一个匿名函数,加()后就调用了它。 
    -----
    第三对()应该是调用我理解的,我是说第一对(),就是把匿名函数包括在内的那一对(function(){...}),这个语法很怪异,不知道哪儿有介绍。关于闭包,我想不能说local的函数都是吧,至少还有第二个条件,就是引用了父函数的局部变量,这里应该不存在闭包,但是我也不是特别确定。
      

  4.   

    (function(){alert('hi');})();等价于 var func = function(){alert('hi');};func();(function(){alert('hi');}) 应该就是 func 了,先定义,再引用。
    如果没有 “function(){alert('hi');}” 外面的(),js语法通不过。
      

  5.   

    即这样是无效的:<script type="text/javascript">
    alert(1);
    return; // <<<<<<<<<<
    alert(2);
    </script>另外可以声明局部变量,而减少内存垃圾。
    <script type="text/javascript">
    (function() {
    var i = 3;
    var j = 7;
    alert(i * j);
    })();
    alert(typeof i); // undefined // 未成为全局变量
    </script><script type="text/javascript">
    var i = 3;
    var j = 7;
    alert(i * j);
    alert(typeof i); // number
    </script>
      

  6.   

    function(){};//function literal
    (function(){})();//call the function literal谢谢各位帅哥