范围问题继续得到我的未定义 - 简单的JavaScript函数与循环和if语句

时间:2015-02-21 05:39:50

标签: javascript loops closures

更新: 我能够为我想要选择的用户获得真实和错误的指示,但到目前为止我无法将他们的ID实际放入数组中。最新代码:

cInfo是{key1:array,key2:'user'}的对象 其中array是一个对象数组 其中'name'是每个数组中每个对象内的键

var theAnswer = [];
var answer = function() {
     for(var c = 0; c < cInfo.array.length; c++)
        var pitched = _.some(_.map(cInfo.array[c], function(n) {return n.name == Name}))
     if (pitched)
         theAnswer.push(cInfo.user[c]);
         return theAnswer;
}

console.log(cInfo.user)返回一个用户,但在该函数中它仍未定义。

END OF UPDATE


我一直在从这段代码中获取未定义的内容。我很确定它与我的闭包有关但如果我真的知道我不会发布这个:

cComplete是一个包含关键字段的对象数组,包括名称和用户。

var answer = function() {
    var c = cComplete.length
    while (c--) {
        var theAnswer = [];
        if (cComplete[c].name == Name) {
            theAnswer.push(cComplete[c].user);

        }
    }
    return theAnswer
}
console.log(answer());

1 个答案:

答案 0 :(得分:0)

尝试在循环之前声明并初始化theAnswer,因为现在它的范围仅限于循环。不仅如此,但目前每次循环迭代时,你的数组都会被重置,所以除了最后一个元素之外它几乎没用。在循环之前初始化将解决这两个问题。

希望这有帮助,快乐编码。