【发布时间】:2011-03-18 16:52:03
【问题描述】:
我有一个函数,其中有一个调用函数的循环。
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]”并且为真。它通过函数工作,进入循环,执行循环直到 x = 4,然后退出循环。函数结束并且(据我所知)返回到 x 应该为 3 的点。它不是从 3 中拾取,加一(使其为 4)然后再次执行循环,而是从 4 中拾取(值来自递归调用的“内部”循环)。
我知道这听起来不连贯,但我想不出任何其他方式来解释它。
是我做错了什么,还是这只是生活中的一个事实,我必须解决一些问题?
更新: 仔细观察后,似乎最早的循环提前退出了。为“x”使用局部变量修复了计数问题,但如果查看前面的示例,循环只会在 4 处退出。它在满足条件之前离开。有什么想法吗?
【问题讨论】:
标签: loops coldfusion recursion for-loop