如何访问内部javascript函数内部的外部变量,请检查下面的代码我需要访问" index" app()函数内的变量。
function validate()
{
for (index = 0; index < results.length; index++) {
var parsedData_1;
var provider = results[index].get("provider");
var user = results[index].get("user");
var addresses = user.get("addresses");
var address = addresses[1];
var GameScore = Parse.Object.extend("Address");
var query = new Parse.Query(GameScore);
var data = JSON.stringify(address);
var parsedData = jQuery.parseJSON(data);
query.get(parsedData.objectId, {
success: function(resultadr) {
var res = JSON.stringify(resultadr);
var parsedData_1 = jQuery.parseJSON(res);
var apartment = parsedData_1.apartment;
apa(apartment);
},
error: function(object, error) {
alert('error');
}
});
function apa(apartment)
{
alert(index); [I'm not getting the index value inside this function]
alert(apartment);
}
}
}
在函数apa()里面我需要索引计数,但我无法得到它,请帮助如何访问函数内部的外部值。
答案 0 :(得分:0)
据我所知,apa()无法访问索引变量,所以我将它放在函数调用的参数中,并像这样调用apa()
apa(apartment, index);
答案 1 :(得分:0)
问题是您正在使用闭包来访问索引,因此可以在app函数中访问指向该变量的最新值。例如,如果results.length equlas 11,app函数中的索引将始终为11。
soltion是在for循环中声明一个变量,将索引值赋给该变量,并将变量传递给app函数。
//Create a factory function for the app function
//Outside the for loop.
var createAppFunc = function (i) {
return function () {
console.log(i);
};
};
for (var index = 0, l = results.length; index < l; index++)
{
var newVar = index;
var app = createAppFunc(index); //Now, app is a function.
}
祝你好运:)。
答案 2 :(得分:0)
您可以使用Function.bind()
将实际索引作为第一个参数传递给sucess-callback。在那里你可以得到它并将其作为参数传递给函数apa()
。并且:使用关键字var
作为for()
中的索引。
function validate() {
for (var index = 0; index < results.length; index++) {
/* all the vars here */
query.get(parsedData.objectId, {
success: function(idx, resultadr) {
var res = JSON.stringify(resultadr);
var parsedData_1 = jQuery.parseJSON(res);
var apartment = parsedData_1.apartment;
apa(idx, apartment);
}.bind(null, index),
error: function(object, error) {
alert('error');
}
});
function apa(index, apartment) {
console.log(index); console.log(apartment);
}
}
}
bind()
的第一个参数(此处为:null)设置绑定函数的context
。无论您传入的是什么,都可以通过关键字this
在成功回调中访问。
答案 3 :(得分:0)
我认为每次调用该函数时,调用都会受到下一个循环调用的影响..所以最后该方法只会被调用一次。
答案 4 :(得分:-1)
您可以全局声明索引变量,然后所有函数都可以访问它