请问这是一个立即执行函数吗?

在《javsscript高级程序设计》p181看到如下代码,看不懂。

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)是什么意思呢?感觉像是一个立即执行函数,但是立即执行函数不应该外面再套上一个小括号吗?看不懂这个结构。function () {} (i)。请各位大佬指点。

我查找到了这篇文章。http://weizhifeng.net/immedia... 里面明确指出了上面那种结构不是立即执行函数,那我就更加搞不懂了,是书里弄错了吗?

阅读 2.4k
4 个回答

是立即执行函数。
匿名函数声明不能这么写function (){}(i)
匿名函数表达式是可以的var fn = function(num){return num;}(i)

result[i] = function(num){
            return function(){
                return num;
            }
        }(i);

提取出来这块代码,很明显的立即函数自执行

这是函数闭包

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题