闭包之[[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]] 便是保存函数作用域链的对象。
高级程序设计第三版:
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦