Javascript 索引超出for循环的界限,但(错误)正在工作
这是我在这里的第一个问题,如果我没有正确进行,很抱歉。如果发生这种情况,请告诉我 我被一个可笑的简单循环弄疯了 变量Javascript 索引超出for循环的界限,但(错误)正在工作,javascript,arrays,json,for-loop,Javascript,Arrays,Json,For Loop,这是我在这里的第一个问题,如果我没有正确进行,很抱歉。如果发生这种情况,请告诉我 我被一个可笑的简单循环弄疯了 变量res是sql查询的响应,其中满足条件的ID保存为JSON数组
res
是sql查询的响应,其中满足条件的ID保存为JSON数组[{“id”:1},{“id”:2}]
。代码如下:
for(var ii = 0; ii <= res.length-1; ii++){
console.log("res[ii].id: "+res[ii].id); //throws the correct message on console, so ii=1 first and later ii=2.
laDatabase.all("SELECT * FROM Movies WHERE Movies.id="+res[ii].id+";", function(err, resMovies){
console.log("resMovies: "+JSON.stringify(resMovies)); //throws the correct message on console, the sql sentence is correct and runs without problem
if(err){
console.log("Error en 'SELECT * FROM Movies WHERE Movies.id="+res[ii].id+";'");
return;
}else{
//I tried to move the response of the sql query to the array I'll return. At this point, ii=2 always
console.log("ii: "+ii);
jsonArrayRespuesta[ii] = resMovies[0];
console.log("jsonArrayRespuesta: "+JSON.stringify(jsonArrayRespuesta));//resMovies[0] is saved in jsonArrayRespuesta[2] both times
console.log("length of jsonArrayRespuesta: "+jsonArrayRespuesta.length);//this shows 3, obviously...
}//if-else
});//Movies
}//for
for(var ii=0;iiAd)sql查询的结果出现,调用了回调,for循环已经运行完毕,ii的值达到(res.length-1)
您可以使用clousere来解决这个问题
for(var ii = 0; ii <= res.length-1; ii++){
console.log("res[ii].id: "+res[ii].id); //throws the correct message on console, so ii=1 first and later ii=2.
(function(res,ii){
laDatabase.all("SELECT * FROM Movies WHERE Movies.id="+res[ii].id+";", function(err, resMovies){
console.log("resMovies: "+JSON.stringify(resMovies)); //throws the correct message on console, the sql sentence is correct and runs without problem
if(err){
console.log("Error en 'SELECT * FROM Movies WHERE Movies.id="+res[ii].id+";'");
return;
}else{
//I tried to move the response of the sql query to the array I'll return. At this point, ii=2 always
console.log("ii: "+ii);
jsonArrayRespuesta[ii] = resMovies[0];
console.log("jsonArrayRespuesta: "+JSON.stringify(jsonArrayRespuesta));//resMovies[0] is saved in jsonArrayRespuesta[2] both times
console.log("length of jsonArrayRespuesta: "+jsonArrayRespuesta.length);//this shows 3, obviously...
}//if-else
});//Movies
})(res,ii);
}//for
for(var ii=0;ii什么是“bucle”?当回调函数出现时,循环停止运行。请阅读Javascript中的“closures”。