Javascript 如何调试或缩小逻辑错误?

Javascript 如何调试或缩小逻辑错误?,javascript,processing,Javascript,Processing,我正在尝试调试我正在制作的这个游戏。for循环有问题,我不知道是什么;从本质上说,我试图让我的矩形在用户单击就绪后在画布上生成。调试逻辑错误的一些方法是什么?在卡纳卡德米身上做这件事 当我在drawRects函数中打印时。控制台显示无限循环并指向我的for循环。 当我单击ready时,控制台每次增加1,因此我知道levelUp功能正在工作 我无法发布其他链接,因为没有足够的rep,但当我打印LN randomRects时,控制台上没有显示任何内容 因此,我认为可以安全地假设for循环有问题,

我正在尝试调试我正在制作的这个游戏。for循环有问题,我不知道是什么;从本质上说,我试图让我的矩形在用户单击就绪后在画布上生成。调试逻辑错误的一些方法是什么?在卡纳卡德米身上做这件事

当我在drawRects函数中打印时。控制台显示无限循环并指向我的for循环。

当我单击ready时,控制台每次增加1,因此我知道levelUp功能正在工作

我无法发布其他链接,因为没有足够的rep,但当我打印LN randomRects时,控制台上没有显示任何内容


因此,我认为可以安全地假设for循环有问题,因为levelUp函数可以工作,但随机矩形不会出现。我还可以使用哪些其他调试技术来缩小问题的范围?

您可以通过准确地了解代码在做什么来调试问题

有几种方法可以做到这一点:

动动脑筋。这是你的第一道防线。在你的头脑中运行代码,或者最好是用一张纸和一支铅笔。使用一些示例值作为输入,逐行浏览,看看代码会做什么。大声说出来,写下来,一遍又一遍地做。这是作为一名程序员的重要部分

使用控制台。处理有一个
println()
函数,该函数应该转到浏览器中的JavaScript控制台。这是你最好的新朋友。打印出您想知道的任何变量的值,如下所示:

println("x: " + x);
或者
if
语句中的一个简单的
println(“here”)
可以告诉您该
if
语句何时执行。将此方法与第一种方法结合起来,以真正检查您的所有假设

使用调试器。如果所有其他操作都失败,请使用调试器逐步完成代码。这基本上是使用计算机来完成前两种方法


实际上,您将使用以上所有功能的组合来调试问题。但是基本的想法是:您需要了解您的代码在做什么。你可以先在头脑中或一张纸上运行代码,然后打印出来测试任何假设或任何你不确定的东西。

在第一个链接中,你
.push(randorects)
,第二个链接是
.push(randRect)
。应该是哪一个?你在推动什么?您是否应该尝试
.push(randRect())
(调用函数)?我不知道应该是哪个,我基本上是在猜测<代码>var randomRects=[]是在第二行定义的全局变量。我尝试了
randomRects.push(randRect())并且它不做任何事情。randRect是一个定义的函数,包含随机的x、y、宽度、高度和颜色。经典的调试方法是在代码中放置
console.log()。在您的例子中,我注意到您的一个循环有一个条件,用于检查对象的
length
属性。如果该属性的值
未定义
或某些奇怪的东西,它可能总是返回false并创建一个无限循环。在您的情况下,我要做的第一件事是仔细检查我的变量是否存在(它们是
!==未定义的
),以及您需要的属性是否也存在并具有您期望的值(长度应该是一个数字)