什么是闭包
闭包是一个 访问其他函数内部变量 的 函数
闭包的作用?
用来解决变量污染。闭包一般用于回调函数
什么是递归
函数内部调用自己
递归的作用?
1.用来遍历DOM树
2.做深拷贝
浅拷贝 与 深拷贝
浅拷贝: 拷贝地址, 修改拷贝后的数据对原数据有影响
深拷贝: 拷贝数据, 修改拷贝后的数据对原数据没有影响
let obj = {
name:'张三',
age:20,
hobby:['学习','上课','干饭'],
student:{
name:'尼古拉斯赵四',
age:38
}
}
//深拷贝函数
function copy(obj,newObj){
for(let key in obj ){
if( obj[key] instanceof Array ){
newObj[key] = []
//递归调用 继续深拷贝数组
copy(obj[key],newObj[key])
}else if( obj[key] instanceof Object ){
newObj[key] = {}
//递归调用 继续深拷贝对象
copy(obj[key],newObj[key])
}else{
newObj[key] = obj[key]
}
}
}
//开始拷贝
let newObj = {}
copy(obj,newObj)
//修改拷贝之后的值
newObj.name = '李四'
newObj.hobby[0] = '游戏'
newObj.student.name = '111'
console.log(obj,newObj)