前辈们好,本人是一名js新手,在阅读《javascript高级程序设计》讲到闭包的时候书上写了这样一段代码
function createFunctions(){ var result = new Array();
for (var i=0; i < 10; i++){
result[i] = function(num){
return function(){
return num;
};
}(i);
}
return result;
}
这里倒数第四行大括号结尾后面的(i)书上说是传入变量i,但是因为之前从没见过这种语法所以不是很理解,哪位大神能具体解释一下这种传入变量的方法吗,感激不尽!
扫码关注w3ctech微信公众号
你的代码修改一下。。。在代码前后加 ```
你可以试一下如果把外面的一层function去掉会得到什么结果,然后再思考一下,我相信就可以明白了
将匿名函数赋值给变量的函数是函数表达式。 函数表达式可以在后面直接加括号(有参数可以传参数)来自执行。它等价于
(function(args){ //body... })(args);
如果还为明白,可以看看我的一篇博文,可能对你有帮助。http://codepen.io/solar/blog/js-css-details
谢谢!书上有讲到,去掉外层function的话返回值全部都是10,我能够理解这段函数用法是将每次循环过后i的值复制给num,只是不太明白function(){}();这种传值的方法
0.0为什么我点击“回复此楼”没有效果。。。
多谢三楼大神!已经去看了!
回1楼:明白!
纠正下我的错误。
以下比我之前说的可靠性更高。
(args)
来立刻执行(此时的i是处于循环中的变量)的。@solar.pom 受益匪浅啊
共收到10条回复