setTimeout((function(i){return function(){events[i](eventArgs)}})(i), 1);是什么意思,不用解释具体功能,这个形式我就看不懂,主要是(function(i){return function(){events[i](eventArgs)}})(i)这种写法是什么意思啊

解决方案 »

  1.   

    (function(i){return function(){events[i](eventArgs)}})(i)
     执行匿名函数 ,参数为i ,再返回一个函数
      

  2.   

    这是在定义的时候立即执行的函数,比如
    var fun = (function(i){ return function(){alert(i)};})(5);
    这相当于 var fun = function(i){alert(i);},fun(5);
    是这两个的和。
    建议你去搜搜闭包!好多的解释!
      

  3.   

    至于中间为何还要return 一个function对象,这个其实实际意义不大,可能更多的是处于代码结构优化上的考虑,因为不可能所有的逻辑都只有一两句代码,这样就需要从别处来实现逻辑函数,这里来包装。
      

  4.   

    相当于你定义一个函数var f1 = function(i){return function(){events[i](eventArgs)}}
    然后执行他f1(i)因为是匿名函数。所以用(f1)把函数体括起来。最后就变成
    (function(i){return function(){events[i](eventArgs)}})(i)