クロージャは関数と参照コンテキストの組み合わせです
閉鎖の主な機能は、さまざまな汚染を回避することです
function fn1 () {
let age = 10
function fn2 () {
//fn2函数中引用了fn1中的变量
console.log(age);
}
fn2()
}
fn1() //10
再帰: 関数内で自分自身を呼び出す
function fn1 () {
console.log('haha')
fn1()
}
fn1() //haha
ディープコピー:
let obj = {
name: '张三',
age: 20,
hobby: ['学习', '上课', '干饭']
}
//1).把obj转成json格式字符串,底层会自动深拷贝
let jsonStr = JSON.stringify(obj)
//2).把json转成对象
let newObj = JSON.parse(jsonStr)
newObj.name = '李四'
newObj.hobby[0] = '游戏'
//此时修改了newObj的属性值对原obj没有影响
console.log(obj, newObj);