如何调试没有提供任何错误的Javascript错误

时间:2017-03-02 13:24:33

标签: javascript node.js debugging

使用Express 4作为我的服务器引擎。当我运行以下功能时,窗口变得没有响应。控制台没有错误。

function updateLoadedData(type, schedule, date) {
  var dateYear = date.year()
  var dateMonth = date.month()
  var dateDate = date.date()

  if (dateData[dateYear] == undefined)
    dateData[dateYear] = new Array()
  if (dateData[dateYear][dateMonth] == undefined)
    dateData[dateYear][dateMonth] = new Array()
  if (dateData[dateYear][dateMonth][dateDate] == undefined)
    dateData[dateYear][dateMonth][dateDate] = new Array()

  var output = ["hello", "stackoverflow"]

  dateData[dateYear][dateMonth][dateDate] = output
}

我不知道试图找出造成这个错误的原因。任何帮助赞赏。提前谢谢。

2 个答案:

答案 0 :(得分:1)

问题必定在其他地方。考虑一下代码的实现。没有错误。

你确实有很多被忽略的{}和;因此,如果您处于严格模式,这也可能是一个问题。



var dateData = {};
var update = function updateLoadedData(type, schedule, date) {
  var dateYear = date.year()
  var dateMonth = date.month()
  var dateDate = date.date()

  if (dateData[dateYear] == undefined)
    dateData[dateYear] = new Array()
  if (dateData[dateYear][dateMonth] == undefined)
    dateData[dateYear][dateMonth] = new Array()
  if (dateData[dateYear][dateMonth][dateDate] == undefined)
    dateData[dateYear][dateMonth][dateDate] = new Array()

  var output = ["hello", "stackoverflow"]

  dateData[dateYear][dateMonth][dateDate] = output
};
update(null,null, {
	'year' : function(){ return 2017;},
	'month' : function(){ return 3;},
	'date' : function(){ return 2;},
});
alert(JSON.stringify(dateData));




另请注意,如果dateData也是数组而不是对象,则该数组的第一个2016键将为null。因此,如果你循环使用它,如果你的循环没有处理空条目,你可能会遇到长时间运行的脚本问题。

这就是为什么你应该.push()到数组而不是设置精确的索引,谁将导致'漏洞'在数组中。所以我有一个预感,你最好使用嵌套对象而不是3d数组。

答案 1 :(得分:0)

在我看来,它与你的上一句话有关:

dateData[dateYear][dateMonth][dateDate] = output

您正在将二维数组扩展为三维数据。

我调试它的方法是注释掉该行,看看窗口是否保持响应。这将告诉你这条线是否是罪魁祸首。如果是,则可以添加console.log以查看dateDate值是什么。也许这是假的。

此外,您可能想要研究多维数组。 This link是一个很好的起点。

正如其他人所指出的,考虑一种不同的方式来表示您的数据。多维数组(尤其是2以上)通常以不同的形式表示。