第一模块:
课程名称:直面JavaScript中的30个疑难杂症
章节:7-4~7-6
讲师名称:公明2020
第二模块:
什么是闭包?
闭包其实是考虑作用域(全局变量和局部变量),闭包是指有权访问另外一个函数作用域中的变量的函数。
闭包的优缺点?
优点:①保护函数内的变量安全。②在内存中维持一个变量,可以做缓存。③自执行函数可以减少内存消耗(function(){}){}
缺点:①引用私有变量不能被销毁,会增大内存的消耗,造成内存泄漏。②闭包可能设计跨域访问,导致性能损失。③函数内部嵌套函数,作用域链得不到释放,造成消耗内存。
第三模块:
闭包举例: function fn() { var num = 10; function fun() { console.log(num); } fun(); } fn(); // 以上代码就属于闭包,fun 这个函数作用域访问了另外一个函数 fn 里面的局部变量 num。 闭包应用: var car = (function () { var start = 13; // 起步价 局部变量 var total = 0; // 总价 局部变量 return { // 正常的总价 price: function (n) { //n 公里数 if (n <= 3) { total = start; } else { total = start + (n - 3) * 5 } return total; }, // 其他超时的费用 yd: function (flag) { return flag ? total + 10 : total; } } })(); console.log(car.price(5)); // 23 console.log(car.yd(true)); // 33 console.log(car.price(1)); // 13 console.log(car.yd(false)); // 13
第四模块: