Javascript 如何调试或缩小逻辑错误?
我正在尝试调试我正在制作的这个游戏。for循环有问题,我不知道是什么;从本质上说,我试图让我的矩形在用户单击就绪后在画布上生成。调试逻辑错误的一些方法是什么?在卡纳卡德米身上做这件事 当我在drawRects函数中打印时。控制台显示无限循环并指向我的for循环。 当我单击ready时,控制台每次增加1,因此我知道levelUp功能正在工作 我无法发布其他链接,因为没有足够的rep,但当我打印LN randomRects时,控制台上没有显示任何内容Javascript 如何调试或缩小逻辑错误?,javascript,processing,Javascript,Processing,我正在尝试调试我正在制作的这个游戏。for循环有问题,我不知道是什么;从本质上说,我试图让我的矩形在用户单击就绪后在画布上生成。调试逻辑错误的一些方法是什么?在卡纳卡德米身上做这件事 当我在drawRects函数中打印时。控制台显示无限循环并指向我的for循环。 当我单击ready时,控制台每次增加1,因此我知道levelUp功能正在工作 我无法发布其他链接,因为没有足够的rep,但当我打印LN randomRects时,控制台上没有显示任何内容 因此,我认为可以安全地假设for循环有问题,
因此,我认为可以安全地假设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并创建一个无限循环。在您的情况下,我要做的第一件事是仔细检查我的变量是否存在(它们是!==未定义的),以及您需要的属性是否也存在并具有您期望的值(长度应该是一个数字)