2016-08-09 4 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] не определена, но одно и то же возвращает true в строке Logger на две строки над ней. – allanquartz

ответ

0

Эта ошибка означает, что:

storageArray[storageCount] 

является undefined. Таким образом, есть TypeError, чтобы попытаться получить доступ к undefined[1].


Вы также создали вероятную бесконечный цикл здесь:

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

Смежные вопросы