从下面代码的输出结果来理解递归执行的顺序
function some(i){
i++;
if(i<10){
some(i);
}
console.log(i);
return i;
}
i=5;
i=some(i);
执行结果
递归函数执行到递归的时候则先不往下执行,而是开始新一轮的遍历,直到递归退出的条件成立,此时从本次开始依次往回执行刚才剩下的未执行的函数。
例子对比
function some(student){
student.age--;
if(student.age>10){
some(student);
}
console.log(student.age);
return student.age;
}
var student = {
name:'xiaoming',
age:'20'
}
some(student)
var i = student.age;
console.log(i);
执行结果
原因分析:递归的执行还是按上述思路执行,造成这种结果的原因是因为对象是按引用存储