范围问题使我的未定义 - 带有循环和 if 语句的简单 JavaScript 函数不断出现

Scope issues keep getting my undefined - simple JavaScript function with loop and if statement

更新: 我能够为我想要 select 的用户获得真假指示,但到目前为止,我无法真正将他们的 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) returns 一个用户,但在函数中它仍然未定义。

更新结束


我一直从这段代码中得到未定义的信息。我很确定这与我的闭包有关,但如果我真的知道我就不会发布这个:

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());

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

希望这对您有所帮助,编码愉快。