一个javascript递归函数的问题

tianxz 2008-11-08 01:48:24
pp=function(ud)
{
ii=ud;
alert('ii='+ii)
if (ii>-1)
{
for (var k=0;k<2;k++)
{
alert('i='+ii+'\nk='+k+'\nu='+ud);
ii=ii-1;
pp(ii);
if (ii<0) {alert('oo'+ii+'\n'+ud+'\nk='+k);break;}
}
}

}
pp(1);

和下面的结果为什么不一样?其中UD忽略。
pp=function(ii)
{
alert('ii='+ii)
if (ii>-1)
{
for (var k=0;k<2;k++)
{
alert('i='+ii+'\nk='+k+'\nu=');
ii=ii-1;
pp(ii);
if (ii<0) {alert('oo'+ii+'\n'+ud+'\nk='+k);break;}
}
}

}
pp(1);

请帮忙分析一下
...全文
223 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangshenghong 2008-11-14
  • 打赏
  • 举报
回复
呵呵,应该是局部变量与全局变量的问题
tianxz 2008-11-12
  • 打赏
  • 举报
回复
还有不理解,谢谢!
neo_yoho 2008-11-08
  • 打赏
  • 举报
回复
因为有ii=ii-1; 对ii这个变量进行改变

不严谨的来理解这2个方法中的ii
上面的ii是个中间变量
下面的ii是个全局变量
IMAGSE 2008-11-08
  • 打赏
  • 举报
回复
友情帮顶~
wmm88257789 2008-11-08
  • 打赏
  • 举报
回复
ding
cloudgamer 2008-11-08
  • 打赏
  • 举报
回复
var ii=ud;
要用var这样定义
否则就是全局变量
toury 2008-11-08
  • 打赏
  • 举报
回复
递归用第二个;
ii要作为全局变量声明来使用
j_lei407 2008-11-08
  • 打赏
  • 举报
回复
第一个函数变量ii作为局部变量替换了参数UD
嵌套调用不改变变量ii
第二个函数ii直接作为参数
嵌套使用改变ii变量

87,995

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧