Javascript文字函数

时间:2012-03-30 10:04:40

标签: javascript function google-maps literals

我的Javascript Literal函数存在问题。

    for (curitem in array)
    {
        var tl = new GTileLayer(copyrightCollection, 0, 21 );

        tl.getTileUrl = function(a, b)  { 
                return MyFunction(a, b, curitem); 
            };

        ...

        secondArray.push(tl);
    } 

问题是:当调用“MyFunction”时,第三个参数始终是函数创建中使用的最后一个值(值类似于0,1,2,3,4,6和I总是收到6)。

我该如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:4)

循环和闭包的经典问题。你可以通过在每个循环中创建一个新变量来轻松解决它,例如通过使用匿名函数并将值作为参数传递:

for (var curitem in array) {
    var tl = new GTileLayer(copyrightCollection, 0, 21);

    (function(curitem) {
        tl.getTileUrl = function(a, b) { 
            return MyFunction(a, b, currentitem); 
        };
    })(curitem);

    // ...

    secondArray.push(tl);
}