递归(面试):
什么是递归函数 : 一个函数在内部调用自己
递归作用和循环类似,也需要有结束条件
function fn(){
console.log('代码块')
fn()
}
fn()
浅拷贝与深拷贝(面试)
浅拷贝: 拷贝地址 , 修改拷贝后的数据原数据也会发生变化
深拷贝: 拷贝数据 , 修改拷贝后的数据原数据不会变化
深拷贝方法:
1.json方法: let obj = JSON.parse( JSON.stringify( 对象 ) )
2.递归方法:
let obj = {
name: '张三',
age: 20,
sex: '男',
hobby: ['吃饭', '睡觉', '学习'],
student: {
name: "班长",
score: 90
}
}
//使用递归函数
function copy(obj, newObj) {
for (let key in obj) {
if (obj[key] instanceof Array) {
newObj[key] = []
copy(obj[key], newObj[key])
} else {
newObj[key] = obj[key]
}
}
}
//创建一个空对象,然后深拷贝
let newObj = {}
copy(obj, newObj)
// 修改 拷贝后的数据
newObj.name = '李四'
newObj.hobby[1] = '打游戏'
// 打印结果 ,查看是否拷贝成功
console.log(obj, newObj)