()()匿名函数的写法中后面括号里面的参数如何理解
比如下面这段代码
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