我已将代码修改为我认为相关的内容。此函数在$(document).ready
函数的开头运行一次。
var evenGaps = [];
const NUMBERED_NEIGHBORS = //some array
var evenLocations = //some array
var gapNumber = 0;
function gapFinder() {
for (var x = 0; x < NUMBERED_NEIGHBORS[evenLocations[i + 2]][1].length; x++) {
if (NUMBERED_NEIGHBORS[evenLocations[i]][1][p] ===
NUMBERED_NEIGHBORS[evenLocations[i + 2]][1][x]) {
var delta0 = evenGaps[gapNumber]["1_Gap"][0] - evenGaps[gapNumber]["2_Filler"][0];
var delta1 = evenGaps[gapNumber]["1_Gap"][1] - evenGaps[gapNumber]["2_Filler"][1];
var delta = [delta0, delta1];
evenGaps.push([]);
evenGaps[gapNumber]["5_Distance"] = Math.max(Math.abs(delta[0]),
Math.abs(delta[1]));
if (Math.abs(delta[0]) === Math.abs(delta[1])) {
evenGaps[gapNumber]["6_Single Path?"] = true;
} else {
evenGaps[gapNumber]["6_Single Path?"] = false;
};
if (evenGaps[gapNumber]["6_Single Path?"] &&
evenGaps[gapNumber]["5_Distance"] >= 2) {
//THE ISSUE ARISES WHEN THE LINE BELOW IS ADDED
for (var i = 0; i < evenGaps[gapNumber]["5_Distance"]; i++) {}
}
gapNumber++;
}
}
}
如果代码中没有包含最后一个for()循环,我可以在Chrome中运行代码而不会出现问题。即使我将它作为空循环运行,仍然会发生无限循环,然而,它是拒绝中断的外循环(我知道这是因为我在控制台上有信息printint&#39;在内环之上)。这通常仅在我快速重新加载页面时发生。如果我删除那一行代码,我可以尽可能快地重新加载它,而不是问题。当我尝试在Firefox中运行它时,它似乎也进入循环但Firefox使用停止脚本对话框停止它,但它显示坏脚本作为for()循环,我说这是导致问题
另外,我使用的是非常简单的Node.js服务器。
答案 0 :(得分:1)
您在此循环中使用变量i
:
for (var x = 0; x < NUMBERED_NEIGHBORS[evenLocations[i + 2]][1].length; x++) {
它的价值取决于你的其他代码;也许它是一个全局变量;或许它完全未定义 - 但是你的内部循环正在改变值,影响外循环的工作方式。