为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第六天 闭包

标签:
JavaScript

第一模块:

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

第四模块:

https://img1.sycdn.imooc.com//635e4dd400012d6313560846.jpg

https://img1.sycdn.imooc.com//635e5007000120a013560847.jpg



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消