diff --git "a/04\351\203\221\347\216\256\345\226\206/\347\254\224\350\256\260/2022.10.28-\351\242\204\347\274\226\350\257\221.md" "b/04\351\203\221\347\216\256\345\226\206/\347\254\224\350\256\260/2022.10.28-\351\242\204\347\274\226\350\257\221.md" new file mode 100644 index 0000000000000000000000000000000000000000..f56fd1eab69b14e9d24ae1a79889336af4501248 --- /dev/null +++ "b/04\351\203\221\347\216\256\345\226\206/\347\254\224\350\256\260/2022.10.28-\351\242\204\347\274\226\350\257\221.md" @@ -0,0 +1,21 @@ +# 8、预编译 + +预编译(变量提升) + +AO(Activation Object)在函数执行前创建 + +1. 创建一个AO临时对象 + +2. 找形参,装入AO,赋值为underfined。找变量声明,装入AO,赋值为underfined + +3. 形参与实参统一 + +4. 找函数声明,赋予函数体 + +GO(Clobal Object)在文件执行前创建 + +1. 创建一个GO临时对象 + +2. 找形参,装入AO,赋值为underfined。找变量声明,装入AO,赋值为underfined + +3. 找函数声明,赋予函数体 diff --git "a/04\351\203\221\347\216\256\345\226\206/\347\254\224\350\256\260/2022.10.31-\351\227\255\345\214\205.md" "b/04\351\203\221\347\216\256\345\226\206/\347\254\224\350\256\260/2022.10.31-\351\227\255\345\214\205.md" new file mode 100644 index 0000000000000000000000000000000000000000..b9daf05b785d520bfc927c4e7930e6501a059708 --- /dev/null +++ "b/04\351\203\221\347\216\256\345\226\206/\347\254\224\350\256\260/2022.10.31-\351\227\255\345\214\205.md" @@ -0,0 +1,20 @@ +# 9、闭包 + + var add = (function () { +     var counter = 0; +     return function () { +     return counter += 1; +     } + })(); + + add(); + add(); + add(); + + // 计数器目前是 3 + +个闭包由两部分组成,函数和创建该函数的环境。 + +由于闭包会携带包含它的函数的作用域,因此会比其他函数占用更多的内存。 + +闭包缺点:当函数保存在外部时,将会生成闭包,闭包会导致原有作用域链不释放,从而造成内存泄漏。