看到一些JS类库和框架的定义写成这样的:
(function(){
    //代码
})();谁知道这种语法给解释一下。

解决方案 »

  1.   

    (function(){
      //代码
    })();
    这是javascript中优雅的方法,定义一个匿名函数:
    function(){
      //代码
    }
    然后立即执行
    (function(){
      //代码
    })();
    这个在javascript中主要是用来避免命名冲突的问题
      

  2.   

    (function(){
    //这里是块级作用域   
    })();
    将函数声明包含在一对圆括号中,表示它实际上是一个函数表达式。紧随其后的另一对圆括号会立即调用这个函数。
    为什么使用这个匿名函数呢?因为javascript中没有块级作用域,比如:
    function fun(count){
    for(var i=0;i<count;i++){
    alert(i);
    }
    alert(i);//因为没有块级作用域,所以函数内部可以到处访问它
    }
    用块级作用域(通常称为私有作用域)的匿名函数的语法如下:
    (function(){
    //这里是快级作用域
    })();
    在这种情况下:
    function fun(count){
    (function(){
    for(var i=0;i<count;i++){
    alert(i);
    }
    })();
    alert(i)//导致一个错误
    }
      

  3.   

    直接运行那个该函数 相当于
    function aaa(){
      //代码
    };
    aaa()
      

  4.   

    (function(){
      //代码
    })();
    这是个自执行匿名函数,即定义一个其名函数,并马上执行,最后面的()还可以传入参数。这样做主要是为了避免命名冲突