别小看了这个递归~!其中有我们都忽略的知识~!你能解释吗?<script src="jquery-1.4.2.js"></script>
<body><div class="dis"></div>
<script>
var nums=1;
var a = {a:'a',b:'b',c:'c',d:{a1:'aa',a2:{a11:'1'},a3:'cc'},e:'e'};
print_r(a);
function print_r(o){ var nb="";
for(var i=0;i<nums;i++)
{
nb+=" ";
}
$.each(o,function(k,v){
if(typeof(v)=="string"){ $(".dis").append("<br/>"+nb+"["+k+"] => "+v);
}
else{
$(".dis").append("<br/>"+nb+"["+k+"] => ");
nums=nums+6;
print_r(v);
}
});
}</script>
</body>
<body><div class="dis"></div>
<script>
var nums=1;
var a = {a:'a',b:'b',c:'c',d:{a1:'aa',a2:{a11:'1'},a3:'cc'},e:'e'};
print_r(a);
function print_r(o){ var nb="";
for(var i=0;i<nums;i++)
{
nb+=" ";
}
$.each(o,function(k,v){
if(typeof(v)=="string"){ $(".dis").append("<br/>"+nb+"["+k+"] => "+v);
}
else{
$(".dis").append("<br/>"+nb+"["+k+"] => ");
nums=nums+6;
print_r(v);
}
});
}</script>
</body>
结果编译过了。。再运行:./犀利哥然后输出了一万行“犀利哥”第一万零一行却输出了“凤姐”,,,,我就奇了怪了
大哥,怎么用vs2005新建网页?偶不会V.V
[b] => b
[c] => c
[d] =>
[a1] => aa
[a2] =>
[a11] => 1
[a3] => cc
[e] => e
http://topic.csdn.net/u/20100310/18/3768cc5a-a1ad-4190-a5b6-9185069150cf.html
看看16,17楼是用什么方法操作 树 的
板主说的才是我发这个贴子我原因,我就是想知道,明明只加没减,但效果中却出了减的效果~!我发的代码正常理解应该输出是这样的~!
[a] => a
[b] => b
[c] => c
[d] =>
[a1] => aa
[a2] =>
[a11] => 1
[a3] => cc
[e] => e以上的效果是因为nums只加没减,所以nums会加到13~!
板主,能帮我解释下吗?谢谢了~!
var a = {a:'a',b:'b',c:'c',d:{a1:'aa',a2:{a11:'1'},a3:'cc'},e:'e'};
print_r(a);
function print_r(o){
$.each(o,function(k,v){
var nb="";
for(var i=0;i<nums;i++)
{
nb+=" ";
}
if(typeof(v)=="string"){ $(".dis").append("<br/>"+nb+"["+k+"] => "+v);
}
else{
$(".dis").append("<br/>"+nb+"["+k+"] => ");
nums=nums+6;
print_r(v);
}
});
}</script>然后google:“javascript函数作用域与闭包”,变量逃脱是javascript里不算bug的bug,这个和递归无关,完全是javascript自己的一个特殊特性。 别把问题泛化到递归上面
应该是递归里的特性,暂且叫他“递归的状态维持”吧,等会做好实验,会发个详细的贴子!~
num 一个值类型,在一个函数里边传的是附本,所以跳出作用域了NUM还是原来的值.
JAVASCRIPT 我就不清楚了
估计就是这个问题