gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:17:36 25 4
gpt4 key购买 nike

我编写了以下内容来测试 Canvas 上的绘图:

function draw3(cg, ctx) {
ctx.clearRect(0,0,canvas.width,canvas.height);
ctx.stroke(cg);
}
function march(i, gl, ct) {
draw3(gl[i], ct);
setTimeout(march((i+1)%2), 40);
}
function draw3main() {
var canvas = document.getElementById('canvas3');
var ctx = canvas.getContext('2d');

var coolGuy = new Path2D("M10 10 h 50 v 50 h -50 Z");
var coolGuy2 = new Path2D("M11 11 h 50 v 50 h -50 Z");
var guysList = [coolGuy, coolGuy2];

march(0, guysList, ctx);
}

当我运行它时,没有任何内容被绘制,并且浏览器控制台在 march 函数中的行上报告“gl”未定义,该函数读取 draw3(gl[i], ct);.但它是传递给函数的参数,因此应该定义它。无法追踪错误,有人可以帮忙吗?

最佳答案

改变你的

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

setTimeout(march, 40, (i + 1) % gl.length, gl, ct);

setTimeout(function() {
march((i + 1) % gl.length, gl, ct);
}, 40);

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

<小时/>

总的来说,它看起来像这样:

function draw3(cg, ctx) {
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.stroke(cg);
}

function march(i, gl, ct) {
draw3(gl[i], ct);
setTimeout(march, 40, (i + 1) % gl.length, gl, ct);
}

function draw3main() {
var canvas = document.getElementById('canvas3');
var ctx = canvas.getContext('2d');

var coolGuy = new Path2D("M10 10 h 50 v 50 h -50 Z");
var coolGuy2 = new Path2D("M11 11 h 50 v 50 h -50 Z");
var guysList = [coolGuy, coolGuy2];

march(0, guysList, ctx);
}

draw3main();
<canvas id="canvas3" width="72" height="72"></canvas>

关于JavaScript:我传入一个列表,尝试访问索引,它说变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59339652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com