手记

【金秋打卡】第六天 闭包

第一模块:

课程名称:直面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

第四模块:



0人推荐
随时随地看视频
慕课网APP