js的递归问题,怎么得到正确的值?

qf521lx 2008-03-17 10:47:23

function getCookie(name){
//var c = document.cookie.split('; ');
var c = ['name=qf', 'age=24', 'sex=男'];
name += '=';
return (function (ary){
ary && ary.toString().indexOf(name) == -1 && arguments.callee(c.shift());
alert(ary);//递归执行完了之后, ①处的调用还没执行完?
return ary;
})(c.shift());// ①
}


<button onclick="alert(getCookie('age'))">getCookie</button>

为什么我总是得到name=qf?每次都一样,
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qf521lx 2008-03-18
  • 打赏
  • 举报
回复
呵呵 谢谢toe999 的热心,结贴啦,我知道我那个写法为什么错了,因为我那个不是递归
qf521lx 2008-03-17
  • 打赏
  • 举报
回复
不管它是什么了 为什么得不到正确的值呢?
qf521lx 2008-03-17
  • 打赏
  • 举报
回复
为什么不叫递归?
tantaiyizu 2008-03-17
  • 打赏
  • 举报
回复
你这不叫递归。。。
toe999 2008-03-17
  • 打赏
  • 举报
回复

<script>
function getCookie(name){

var c = ['name=qf', 'age=24', 'sex=男'];
var strValue;

for(var nI = 0; nI < c.length; nI ++)
{
if(c[nI].toString().indexOf(name) > -1)
{
strValue = c[nI];

break;
}
else
{
strValue = null;
}
}

return strValue

}
</script>

<button onclick="alert(getCookie('age'))">getCookie</button>
qf521lx 2008-03-17
  • 打赏
  • 举报
回复
不是说都显示一遍,而是getCookie('')传进去什么键,就显示这个值,其实就是根据cookie名得到cookie值
比如getCookie('sex'),就得到sex的值:sex=男
如果没有就返回null
toe999 2008-03-17
  • 打赏
  • 举报
回复
算是看明白了,搞半天是个实参。

不太确定楼主说的正确的值是指哪种,是只要数值里有的话就把数据里所有的值都显示一遍吗。

如果是的话就是下面的

<script>
function getCookie(name){

var c = ['name=qf', 'age=24', 'sex=男'];

return (function (ary){

if(ary != undefined && ary.toString().indexOf(ary) > -1)
{
arguments.callee(c.shift());
alert(ary);
}

})(c.shift());
}
</script>

<button onclick="getCookie('sex')">getCookie</button>
toe999 2008-03-17
  • 打赏
  • 举报
回复
的确是递归数,用到了arguments.callee
(c.shift();//
上面这个看的不是很明白

87,910

社区成员

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

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