代码之家  ›  专栏  ›  技术社区  ›  codersarepeople

javascript范围问题-Chrome扩展

  •  1
  • codersarepeople  · 技术社区  · 16 年前
    for(var p = 0; p < xmls.length; p++) {
        var feed = new google.feeds.Feed(xmls[p]);
        feed.load(function(result) {
    //code
    

    在上面的代码中,如果我在feed.load函数之外输出p,我会正确地看到p迭代。但是,如果我在函数内部输出p(在我需要访问它的地方),它将保持在2(恰好是数组“xmls”的长度)。我知道这是一个范围问题,但不知道如何解决它。

    事先谢谢!

    1 回复  |  直到 16 年前
        1
  •  3
  •   Matthew Flaschen    16 年前

    您需要创建一个新的作用域,这意味着一个新的函数。

    for(var p = 0; p < xmls.length; p++) {
        (function(p) {
             var feed = new google.feeds.Feed(xmls[p]);
             feed.load(function(result) {
                           // use p
             });
         })(p);
    }
    
    推荐文章