diff --git "a/15\351\231\210\347\253\213\346\231\272/\347\254\254\344\271\235\346\254\241\344\275\234\344\270\232/.keep" "b/15\351\231\210\347\253\213\346\231\272/\347\254\254\344\271\235\346\254\241\344\275\234\344\270\232/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/15\351\231\210\347\253\213\346\231\272/\347\254\254\344\271\235\346\254\241\344\275\234\344\270\232/zuoye.md" "b/15\351\231\210\347\253\213\346\231\272/\347\254\254\344\271\235\346\254\241\344\275\234\344\270\232/zuoye.md" new file mode 100644 index 0000000000000000000000000000000000000000..00b124749fe3ed1441a8d99e5602e9f78e70ffc6 --- /dev/null +++ "b/15\351\231\210\347\253\213\346\231\272/\347\254\254\344\271\235\346\254\241\344\275\234\344\270\232/zuoye.md" @@ -0,0 +1,86 @@ + //闭包 = 内层函数 + 引用的外层函数变量 + //当外部想要使用闭包的变量时,需要return + // function outer(){ + // var a = 10; + // return function(){ + // console.log(a); + // } + // } + // var fn = outer(); + // fn(); + + //函数内部可以访问外部的全局变量 + //函数外部无法读取函数内部的变量 + // let age = 10; + // function huhu(){ + // console.log(age); + // } + // huhu(); + + //链式作用域结构 + //首先子对象会在自身的作用域寻找变量,如果没有则一层一层的向父级寻找。、 + // var name = '小明' + // function man() { + // console.log(name) + // var age = '20'; + // (function getage() { + // console.log(age) + // }()) + // } + // man() + + //闭包的作用 + //访问局部变量 + // function man(){ + // var age = 20; + // return function(){ + // console.log(age); + // } + // } + // //console.log(age); //报错 + // var huhu = man(); + // huhu(); + + //保存局部变量 + //因为垃圾回收机制的存在,函数执行完成后里面的局部变量会被销毁 + // function get(){ + // var num = 0; + // return function(){ + // console.log(num++); + // } + // } + // var aa = get(); + // aa(); // 0 + // aa(); // 1 + + //实现类的封装 + // function man(){ + // var name = '小明'; + // var age = 15; + // return { + // getName : function (){ + // console.log(name); + // }, + // setName : function (newName){ + // name = newName; + // } + // } + // } + // var huhu = new man(); + // huhu.getName(); + // huhu.setName('张三'); + // huhu.getName(); + + //注意点:内存泄漏 (正常情况下,因为垃圾回收机制,局部变量在函数执行完毕之后其生命周期也结束, + //所以内存会被回收释放。但是因为我们使用了闭包,导致变量一直保存在内存,无法得到释放,造成内存的消耗。) + //退出函数前,将不使用的局部变量删除,或者解除函数的引用 + // function num(){ + // var num = 0; + // return function(){ + // console.log(num++); + // } + // } + // var huhu = num(); + // huhu(); + // huhu(); + // huhu = null; //解除函数的引用,此时变量num释放 \ No newline at end of file diff --git "a/15\351\231\210\347\253\213\346\231\272/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/.keep" "b/15\351\231\210\347\253\213\346\231\272/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/15\351\231\210\347\253\213\346\231\272/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/30.md" "b/15\351\231\210\347\253\213\346\231\272/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/30.md" new file mode 100644 index 0000000000000000000000000000000000000000..e6767f12dc34f134151f9571edd55e32bb6ade2e --- /dev/null +++ "b/15\351\231\210\347\253\213\346\231\272/\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232/30.md" @@ -0,0 +1,55 @@ + //预编译 : 预编译分为全局预编译和函数预编译 + //全局预编译:在网页加载完成时执行 + //函数预编译:函数执行的前一刻执行 + //全局预编译步骤: + //创建GO(Global Object,全局执行期上下文,在浏览器中为window)对象; + //寻找var变量声明,并赋值为undefined; + //寻找function函数声明,并赋值为函数体; + //执行代码。 + + // GO{ + //x:u + //y:4 + //z:u + //add:f add(){return n = n + 1} => f add(){ return n = n + 3} + // } + // var x = 1, + // y = z = 0; + + // function add(n) { + // return n = n + 1; + // } + + // y = add(x); //4 + // function add(n) { + // return n = n + 3; + // } + + // z = add(x); //4 + + //函数预编译步骤: + //创建AO对象 + //寻找函数的形参和变量声明,将变量和形参名作为AO对象的属性名,值设定为undefined. + //将形参和实参相统一,即更改形参后的undefined为具体的形参值。 + //寻找函数中的函数声明,将函数名作为AO属性名,值为函数体。 + + //AO{ + //a:u + //b:u + //} + function fn(a) { + console.log(a); //u + var a = 123; + console.log(a); //123 + + function a() { }; + console.log(a); //123 + + var b = function () { }; + console.log(b); // f(){} + + function d() { }; + } + + + fn(1); \ No newline at end of file diff --git a/sxss/.keep b/sxss/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/sxss/10.27/.keep b/sxss/10.27/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/sxss/10.27/\345\276\256\344\277\241\345\233\276\347\211\207_20221026162847.jpg" "b/sxss/10.27/\345\276\256\344\277\241\345\233\276\347\211\207_20221026162847.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..c403f35da5ee63529573adc805d3ee0708637806 Binary files /dev/null and "b/sxss/10.27/\345\276\256\344\277\241\345\233\276\347\211\207_20221026162847.jpg" differ