У меня есть функция, в которой есть цикл, который вызывает функцию.
function displayItem(item, isChild)
{
if (isChild)
{
writeOutput('<li>' & item.name & '</li>');
}
else
{
writeOutput('<li>' & item.name);
}
try
{
if (item.hasChild)
{
writeOutput('<ul>');
numberOfItems = item.numChildren;
for (x=1;x LT numberOfItems;x++)
{
displayItem(item.child[x], true);
}
writeOutput('</ul>');
}
}
catch(Exception e){}
writeOutput('</li>');
}
После выполнения функции цикл продолжается от значения x из этого выполнения, а невыбирая, где он остановился раньше.
Например: x равен 3. displayItem передается "item.child [3]" и true.Он работает через функцию, входит в цикл, выполняет цикл до x = 4, затем выпадает из цикла.Функция завершается и (из того, что я понимаю) возвращается к точке, где x должно быть 3. Вместо того, чтобы взять из 3, добавить один (делая его 4) и затем выполнить цикл снова, он берет из 4 (значениеиз "внутреннего" рекурсивно называемого цикла).
Я знаю, что это звучит бессвязно, но я не могу придумать какой-либо другой способ объяснить это.или это просто жизненный факт и что-то, с чем мне приходится работать?
ОБНОВЛЕНИЕ: После более подробного анализа создается впечатление, что самый ранний цикл завершается рано.Использование локальной переменной для 'x' устранило проблему подсчета, но цикл просто выходит на 4, если смотреть на предыдущий пример.Уходит до того, как условие будет выполнено.Есть идеи?