+ -
当前位置:首页 → 问答吧 → 这用的是哪门子的语法?晕了一下午了,求救!:(

这用的是哪门子的语法?晕了一下午了,求救!:(

时间:2011-12-14

来源:互联网

JScript code
    
function createFunctions()
    {
        var result=new Array();
        for(var i=0;i<10;i++)
        {
            result[i]=function(num){
                return function(){
                    return num;
                };
            }(i);//这块用的是哪门子的语法?看不懂啊!
        }
        return result;
    }
    var funcs=createFunctions();
    for(var i=0;i<funcs.length;i++)
    {
        document.write(funcs[i]()+"<br />");
    }

求教各位中间用的是哪门子的语法啊?怎么函数体后面还跟个圆括号(i)呢?

作者: pkuxmuflsk   发布时间: 2011-12-14

这是闭包,,
function(num){
  return function(){
  return num;
  };
}(i);
这不是一个匿名方法么,后面一个括号表示调用这个方法,i是参数,然后返回值赋给result[i]

作者: ZXY900213   发布时间: 2011-12-14

感谢您的回复,可是函数的方法调用不是应该放在圆括号里面吗?起码也应该是(function(num){
  return function(){
  return num;
  };
})(i);才对吧,不加外面的圆括号不是都被认为是函数的声明吗?
引用 1 楼 zxy900213 的回复:

这是闭包,,
function(num){
  return function(){
  return num;
  };
}(i);
这不是一个匿名方法么,后面一个括号表示调用这个方法,i是参数,然后返回值赋给result[i]

作者: pkuxmuflsk   发布时间: 2011-12-14