2016-08-09 65 views
-1

无法解决为什么我使用以下代码获取此错误: “执行失败:TypeError:无法从未定义的属性读取1(第201行,文件”代码“)”while循环中的未定义变量

if (variableDate != storageArray[storageCount][1]) {//if dates are equal. 
    Logger.log("line 197 executed " + (storageArray[storageCount][1] != 'End')); 
    Logger.log(storageArray[storageCount]); 
    while (storageArray[storageCount][1] != 'End') {} <-- Line 201 error 

第197行的日志返回true,第二个日志返回一个数组。

[16-08-09 14:22:58:428 AEST] line 197 executed true 
[16-08-09 14:22:58:428 AEST] [42590.0, Mon Aug 08 00:00:00 GMT+10:00 2016, , , , ] 

如果我将storageCount变量更改为一个整数,它工作正常。我无法理解为什么storageCount变量在记录器中工作,但在while循环中未定义。

+0

它看起来像你故意创造了一个无限循环。是否有其他异步事件可以通过更改'storageArray'来恢复循环?我会看看那里。 – 4castle

+0

我创建了无限循环以通过该点。该循环根本不执行,错误表示storageArray [storageCount]未定义,但同样的事情在Logger上方的两行中返回true。 – allanquartz

回答

0

即错误意味着:

storageArray[storageCount] 

undefined是。因此,尝试访问undefined[1]TypeError


您还创建了这里可能无限循环:

while (storageArray[storageCount][1] != 'End') {} 

所以,即使你没有足够的TypeError,这将仅仅是一个无限循环,如果条件是,自从!= 'End',那么它永远不会改变,所以会永远循环。

+0

它适用于[1]。我无法解决的是为什么同样的事情不是两行不明确的。 – allanquartz

+0

@allanquartz - 我想知道伐木是否让你感到困惑。有时,日志抓取对象引用存在问题,然后在实际代码运行后异步使用它(在某些情况下'console.log()'在Chrome中有这个问题)。我建议在调试器中设置一个断点,然后只是看它执行,看看到底发生了什么。 TypeError不是谎言。在调试器中逐行浏览它并不是谎言。日志记录可能存在计时问题。你也可以尝试'Logger.log(JSON.stringify(storageArray [storageCount]))'。 – jfriend00

+0

这是发送storageCount超出数组长度的无限循环。 – allanquartz