Jim*_*mmy 1 coldfusion recursion loops for-loop
我有一个函数,其中有一个调用函数的循环.
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>');
}
Run Code Online (Sandbox Code Playgroud)
执行该函数后,循环继续执行该执行的x值,而不是从之前的位置开始.
例如:x为3. displayItem传递"item.child [3]"并为true.它通过函数工作,进入循环,执行循环到x = 4,然后退出循环.函数结束并(根据我的理解)返回到x应为3的点.而不是从3中取出,添加一个(使其成为4)然后再次执行循环,它从4中取出(值从"内部"递归地称为循环).
我知道这听起来不连贯,但我想不出任何其他方式来解释它.
有什么我做错了,或者这只是生活中的一个事实,我必须解决一些问题?
更新: 看了更多,看起来好像最早的循环提前退出.使用局部变量'x'修复了计数问题,但是如果查看上一个示例,则循环只退出4.它在条件满足之前离开.有任何想法吗?