是这个定义的function的参数,一样的function(i){
             
                return function(){
                    alert(i);    
                }
                 
            
}

解决方案 »

  1.   

    闭包嘛,就是为了实现块级作用域的为什么要块级作用域呢,因为这个模块中的某些变量,我只希望在这个模块中使用,不希望外界的其他因素导致这些变量的变化。这个地方呢,其实就是为了模仿:fn(),这种直接执行的函数的,fn在你的代码里,就是第一个括号,第二个括号就是fn()这里的括号了,就是为了传参的。你上面的写法,前面不加括号其实也是一样的,只是为了看着更方便,所以才加上的。这是我的理解,如果有问题,请各位指正啊。
      

  2.   


    //后面括号中的参数是实参不是形参(下面的代码中a是形参,b和"string2"是实参),它可以是已存在的变量
    //或者直接是一定类型的值,如下:
    var b='string';
    (function(a){...})(b);//传变量给参数a
    (function(a){...})('string2')//直接传值给参数a