无法读取函数外的值

时间:2014-07-23 14:07:15

标签: javascript angularjs

我正在学习JavaScript和AngularJS。我想使用函数之外的值,但我不知道如何访问它们。

这是我的代码(AngularJS控制器):

var init = function() {
    $http.get('getSomeValues').then(function (res) {
        var returnArray = res.data; // Result is array

        for(var i=0; i < returnArray.length; i++) { // Loop through the array
            console.log("THIS WORKS FINE: ", returnArray[i].value); // It works
            $http.get('getOtherValues/' + returnArray[i].value).then(function (res) {
                console.log("WHAT'S IN IT: ", returnArray[i].value); // Shows 'undefined' error
            });
        }
    });
};
init();

所以基本上我想访问数组 returnArray ,但我不能。有没有什么好方法可以访问这些值?我假设'。然后(函数..'导致错误..

1 个答案:

答案 0 :(得分:2)

您需要使用IIFE

替换:

for(var i=0; i < returnArray.length; i++) { // Loop through the array
    $http.get('getOtherValues/' + returnArray[i].value).then(function (res) {
        console.log("WHAT'S IN IT: ", returnArray[i].value); // Shows 'undefined' error
    });
}

使用:

for(var i=0; i < returnArray.length; i++) { // Loop through the array
    (function(data){
        $http.get('getOtherValues/' + data.value).then(function (res) {
            console.log("WHAT'S IN IT: ", data.value); // Shows 'undefined' error
        });
    }(returnArray[i]))
}

这确保了对于for循环的当前迭代,data变量将设置为当前raturnArray项。