Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Бесконечный цикл (https://javascript.ru/forum/misc/20417-beskonechnyjj-cikl.html)

Sundro 07.08.2011 16:27

Бесконечный цикл
 
Вот цикл,
for (1i > 6 + countDayThisMonth; 2i = 41; i--, countDayBeforeMonth--){
alert(i)
alert(countDayBeforeMonth)
td[i].innerHTML = countDayBeforeMonth
td[i].className = 'nothisMonth'
}

При выполнении программы стало ясно что он бесконечный =)
Для меня такое поведение его было неочевидным, обратился к Фленагану,
разведать синтаксис:
for(инициализация; проверка; инкремент){
инструкция
}
На этапе иницализации было выполнено выражение 1i > 6 + countDayThisMonth, что получит цикл в качестве инициализатора в результате сравнения, ведь i не объявлена, поскольку это 2i = 41 условие проверки, из за чего цикл вечный и получился?

Aetae 07.08.2011 16:59

==

kobezzza 07.08.2011 17:01

Смешная ошибка)

Sundro 07.08.2011 17:09

Цитата:

Сообщение от Aetae (Сообщение 118689)

Простите не понял, можно поподробнее ?

Aetae 07.08.2011 17:32

ссылку щёлк

Sundro 07.08.2011 20:12

Цитата:

Больше (>) Возвращает true, если левый операнд больше правого. var2 > var1
Здесь не описаны случаи когда сравниваются несравнимые величины (тк ка i не определено то оно undefined, по моему скромному мнению здесь должна выскакивать ошибка или я чего то не понимаю)

Sundro 07.08.2011 20:14

Ошибку я конечно исправил, но хочется докопаться до истины и понять что там происходит, раз уж случилось =)

ctpz 08.08.2011 11:53

ты используешь знак присвоения (=). Если ты хочешь проверить содержимое переменной в цикле, то надо писать ==

Sundro 08.08.2011 13:58

Ааааа. Точно блин...иногда случается, что мозги набекрень идут


Часовой пояс GMT +3, время: 23:26.