目前我找到的对递归最恰当的比喻,就是查词典。
我们使用的词典,本身就是递归,为了解释一个词,需要使用更多的词。
当你查一个词,发现这个词的解释中某个词仍然不懂,于是你开始查这第二个词,可惜,第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能看懂的,那么递归走到了尽头,然后你开始后退,逐个明白之前查过的每一个词,最终,你明白了最开始那个词的意思。。。
解释:
递归,就是在运行的过程中调用自己
const oldObj = {
name:'测试',
age:20,
colors:['orange','green','blue'],
friend:{
name:'小夏'
}
}
// 深拷贝函数
function deepClone(obj){
if(typeof obj !=='object' || obj == null){
return obj;
}
let result;
if(obj instanceof Array){
result=[]
} else {
result ={}
}
for(let key in obj){
if(obj.hasOwnProperty(key)){
result[key] = deepClone(obj[key])
}
}
return result;
}
const newObj2 = deepClone(oldObj)
newObj2.friend.name = '小野'
newObj2.name = 'xiannv'
newObj2.colors[4]='black'
console.log('oldObj',oldObj)
console.log('newObj',newObj2)