请教JS函数的一种传值写法
javascript吧
全部回复
仅看楼主
level 4
chenqz0826 楼主
今天学习了函数的闭包与变量,其中有这么一个段写法:
for(var i=0; i<5; i++){
result[i]=function(num){
return function(){
return num;
};
} (i) ;
}
不看其它的,只看一下以上程序中倒数第二行的“ } (i) ”,请问这是一种什么写法?看上去好像是:
result[i]=function(num){。。。。}(i); 一样,这是怎么个传值的?这样能把 i 的值传形参num了?还能给我举个简单类似这样的传值例子么?谢 谢!
2022年03月03日 14点03分 1
level 4
chenqz0826 楼主
顶一下。
2022年03月03日 14点03分 2
level 12
匿名函数定义后立即调用,i传入num,result[i]是这个匿名函数返回的函数
2022年03月05日 06点03分 5
level 2
result[i] = function (num) {...} (i);是个立即执行函数,这个函数的返回值是另一个函数,形成了闭包使作用域持久化,内部函数通过作用域链可以访问num,num的值是每次循环中的i传入。这里的知识点是闭包和函数作用域
2022年03月28日 07点03分 6
使用var声明的变量是在函数作用域中(或顶级作用域),如果没这个自执行函数使用形参保留每次i的值而直接访问变量i,那它的值是循环结束后的值
2022年03月28日 07点03分
我靠,感谢!明白了,原来返回的是个函数。JS的语言写法真是随心所欲。。
2022年03月29日 04点03分
1