Javascript在循环中第二次执行函数时抛出未定义错误
我正在用JS和jQuery在画布上绘制形状。我有一个渲染循环函数,它使用来自对象的信息重新绘制形状。这个对象已经定义,代码在循环中运行了一次,然后这个对象就没有定义,我不知道为什么了。我不怎么做JS,所以我不确定我是否遗漏了一些明显的东西。我已经检查了其他线程的负载,但似乎找不到为什么我的值在定义后会变为未定义状态。以下是代码的简化版本:Javascript在循环中第二次执行函数时抛出未定义错误,javascript,jquery,html,canvas,Javascript,Jquery,Html,Canvas,我正在用JS和jQuery在画布上绘制形状。我有一个渲染循环函数,它使用来自对象的信息重新绘制形状。这个对象已经定义,代码在循环中运行了一次,然后这个对象就没有定义,我不知道为什么了。我不怎么做JS,所以我不确定我是否遗漏了一些明显的东西。我已经检查了其他线程的负载,但似乎找不到为什么我的值在定义后会变为未定义状态。以下是代码的简化版本: $document.ready{ const canvas = $canvas; const context = canvas.getCon
$document.ready{
const canvas = $canvas;
const context = canvas.getContext();
const 2dArray = [ [...], ..., [...] ];
const object = { coords: {x:5, y:5}, shape: 2dArray};
render(canvas, context, object);
});
function render(canvas, context, object){
drawFunction(canvas, context, object);
requestAnimationFrame(render);
};
function drawFunction(canvas, context , object){
drawShape(context, object.coords, object.shape);
};
快速简化演练:
drawShape:迭代二维数组,从3x3的正方形网格形成形状。
drawFunction:执行drawShape和其他一些位。
render:递归函数,用于连续绘制和重画画布。
现在发生的情况是,drawFunction在渲染循环中执行一次,然后在第二次执行和第二次执行drawShape时,对象现在变得未定义。我不理解这一点,因为它已经被定义和使用了?该形状只绘制了一次,但随后出现了一些问题
感谢您的帮助,请告诉我,我是个白痴,错过了一些愚蠢而简单的东西。requestAnimationFrame调用给定函数时没有任何参数。所以渲染函数在第二次执行时不会接收任何参数。要解决此问题,可以使用绑定函数上的参数
函数rendercanvas、上下文、对象{
绘图功能画布、上下文、对象;
requestAnimationFramerender.bindnull、画布、上下文、对象;
}
太好了,非常感谢!我不习惯Js语法,因为我主要使用C++/C等,所以我怀疑我是否能解决这个问题。谢谢