闭包理解(2021.8.13)

闭包之[[Scopes]]属性;

为了区分普通匿名函数与闭包,这里使用谷歌浏览器和console.dir()命令查看普通函数与闭包函数。
同时使用编辑器声明了两个函数:

   //普通函数
    function ordinary() {
        return 'ordinary Function!!!';
    };
    console.dir(ordinary);

   //闭包
    function closure_Fn() {
        var num = 1;
        return function () {
            return ++num;
        }
    }
    var add = closure_Fn();
    console.dir(add);
    console.log(add());//2
    console.log(add());//3

打开控制台会看到:
普通函数的 [[Scopes]] 属性中只有一个 Global 全局对象。
闭包函数的 [[Scopes]] 属性中新增了Closure(闭包)对象,并且。个对象保存了num值,name属性便是闭包函数的标识(zhi)符 closure_Fn ;

这里的 num 被保存到了closure_Fn闭包函数下的Closure中。。
请添加图片描述

图片描述
到这里,我们可以很清晰的看清了普通函数与闭包的主要区别,这里的 [[Scopes]] 便是保存函数作用域链的对象。

高级程序设计第三版:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值