JavaScript:我传入了一个列表,试图访问一个索引,它说变量未定义

JavaScript:我传入了一个列表,试图访问一个索引,它说变量未定义,javascript,html5-canvas,Javascript,Html5 Canvas,我写了以下内容来测试画布上的绘图: 功能图3(cg、ctx){ clearRect(0,0,canvas.width,canvas.height); ctx.冲程(cg); } 功能三月(i、gl、ct){ 图纸3(总帐[i],总帐); 设置超时时间(三月((i+1)%2),40; } 函数draw3main(){ var canvas=document.getElementById('canvas3'); var ctx=canvas.getContext('2d'); var coolGuy

我写了以下内容来测试画布上的绘图:

功能图3(cg、ctx){
clearRect(0,0,canvas.width,canvas.height);
ctx.冲程(cg);
}
功能三月(i、gl、ct){
图纸3(总帐[i],总帐);
设置超时时间(三月((i+1)%2),40;
}
函数draw3main(){
var canvas=document.getElementById('canvas3');
var ctx=canvas.getContext('2d');
var coolGuy=新路径2D(“M10 10 h 50 v 50 h-50 Z”);
var coolGuy2=新路径2D(“M11 11 h 50 v 50 h-50 Z”);
var guysList=[coolGuy,coolGuy2];
三月(0日,guysList,ctx);
}
当我运行它时,不会绘制任何内容,浏览器控制台在
march
函数中的行上报告“gl”未定义,该函数读取
draw3(gl[I],ct)。但它是传递给函数的参数,所以应该定义它。无法跟踪错误,有人能帮忙吗?

更改您的

setTimeout(march((i+1)%2), 40);

现在,您只需使用一个参数
(i+1)%2
即可立即调用
march()


总之,它看起来是这样的:

功能图3(cg、ctx){
clearRect(0,0,ctx.canvas.width,ctx.canvas.height);
ctx.冲程(cg);
}
功能三月(i、gl、ct){
图纸3(总帐[i],总帐);
设置超时(3月,40日,(i+1)%gl.length,gl,ct);
}
函数draw3main(){
var canvas=document.getElementById('canvas3');
var ctx=canvas.getContext('2d');
var coolGuy=新路径2D(“M10 10 h 50 v 50 h-50 Z”);
var coolGuy2=新路径2D(“M11 11 h 50 v 50 h-50 Z”);
var guysList=[coolGuy,coolGuy2];
三月(0日,guysList,ctx);
}
draw3main()
setTimeout(march, 40, (i + 1) % gl.length, gl, ct);
setTimeout(function() {
  march((i + 1) % gl.length, gl, ct);
}, 40);