日期:2014-05-16  浏览次数:20367 次

()()匿名函数的写法中后面括号里面的参数如何理解
比如下面这段代码
for(var i=0;i<aLi.length;i++){


aLi[i].onclick = (function(i){

return function(){
alert(i);
}

})(i);

}

};

后面括号中的i这个参数如何理解呢难道它是常规写法中的参数吗,如fn(abc,cde)括号中的参数吗

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

------解决方案--------------------
闭包嘛,就是为了实现块级作用域的

为什么要块级作用域呢,因为这个模块中的某些变量,我只希望在这个模块中使用,不希望外界的其他因素导致这些变量的变化。

这个地方呢,其实就是为了模仿:fn(),这种直接执行的函数的,fn在你的代码里,就是第一个括号,第二个括号就是fn()这里的括号了,就是为了传参的。

你上面的写法,前面不加括号其实也是一样的,只是为了看着更方便,所以才加上的。

这是我的理解,如果有问题,请各位指正啊。
------解决方案--------------------

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