Javascript Can';t读取函数外部的值

Javascript Can';t读取函数外部的值,javascript,angularjs,Javascript,Angularjs,我正在学习JavaScript和AngularJS。我想使用函数之外的值,但我不知道如何访问它们 这是我的代码(AngularJS控制器): var init=function(){ $http.get('getSomeValues')。然后(函数(res){ var returnArray=res.data;//结果是数组 对于(var i=0;i

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

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

var init=function(){
$http.get('getSomeValues')。然后(函数(res){
var returnArray=res.data;//结果是数组
对于(var i=0;i
所以基本上我想访问数组returnArray,但是我不能。有什么好方法可以访问这些值吗?我假设“.then(function..”导致错误..

您需要使用:

替换:

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
与:

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(var i=0;i

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

了解JavaScipt闭包。如果需要返回数组[i]中发送的内容,可以使用res,您可以通过修改getOtherValues代码将其重新发布回res。这很优雅answer@Cerbrus哦,我的意思是,你能解释一下我的原始代码中的错误吗?问题是循环在
get
完成之前继续。这导致
I
returnArray[I]中成为不应该出现的东西如果这个答案为你提供了解决方案,你能考虑接受我的答案吗?
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]))
}