外部变量范围在javascript函数中不可用
如何访问内部javascript函数中的外部变量,请检查下面的代码,我需要访问app()函数中的“index”变量外部变量范围在javascript函数中不可用,javascript,parsing,Javascript,Parsing,如何访问内部javascript函数中的外部变量,请检查下面的代码,我需要访问app()函数中的“index”变量 function validate() { for (index = 0; index < results.length; index++) { var parsedData_1; var provider = results[index].get("provider");
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);
}
}
}
函数验证()
{
对于(索引=0;索引
在函数apa()内部,我需要索引计数,但我无法获取它,请帮助如何访问函数内部的外部值。您可以全局声明索引变量,然后所有函数都可以访问它。据我所知,apa()无法访问索引变量,所以我会把它放在函数调用的参数中,然后像这样调用apa()
apa(apartment, index);
//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.
}
问题是您使用闭包来访问索引,因此分配给该变量的最新值可以在app函数中访问。例如,如果results.length等于11,则应用程序函数中的索引将始终为11 解决方法是在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.
}
//为应用程序函数创建工厂函数
//在for循环之外。
var createAppFunc=函数(i){
返回函数(){
控制台日志(i);
};
};
对于(var index=0,l=results.length;index
祝您好运:)。您可以使用
函数.bind()
将实际索引作为第一个参数传递给suces回调。在那里,您可以获取它并将其作为参数传递给函数apa()
。并且:对for()
中的索引使用关键字var
函数验证(){
对于(var index=0;index
bind()
的第一个参数(此处为null)设置绑定函数的上下文。您传入的任何内容都可以在成功回调中通过关键字this
访问。我认为每次调用函数时,调用都会受到下一次循环调用的影响。。因此,该方法最后只会被调用一次。为什么需要apa内部的索引?你不能以现在的方式访问它。我需要在apa()函数中创建一些动态ID,所以我需要它。这也不行,因为当get
返回成功时,因为循环已经完成。我需要测试它,但我认为var I=index;apa(公寓,i);每次在函数apa()中获取索引的最后一个计数值时,如何传递正确的值?如果索引计数0意味着我需要将0传递给apa()。谢谢你的提醒。我没有提到这一点,请稍等片刻编辑我的回答抱歉@Oday它不起作用,我不想将app()函数置于循环之外,因为我会在其中传递许多参数。感谢您的回复:)@ManoharSingh您的应用程序功能仍在For循环中,并存储在应用程序variable中。for循环之外的是app函数的工厂。我还测试了代码,它的工作原理是索引值在app函数的所有实例中都可用。