继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

闭包之[[Scopes]]属性;

纯情掉了一地
关注TA
已关注
手记 33
粉丝 30
获赞 84

为了区分普通匿名函数与闭包,这里使用谷歌浏览器和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]] 便是保存函数作用域链的对象。

高级程序设计第三版:

http://img1.mukewang.com/5afd4ce9000168e710400780.jpg

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP