第一模块:
课程名称:直面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第四模块: