javascript 函数初探 (六)--- 闭包初探#3

关定义与闭包:

实际上,每个函数都可以被认为是一个闭包。因为每个函数都在其所在域(即该函数的作用域)中维护了某种联系。

但在大多数的时候,该作用于在函数体内被执行完之后就被自行销毁了。---除非发生某些有趣的事情,如上述两个例子,导致该作用域被保留下来。

根据目前所说,我们可以说,如果一个函数会在其父级函数返回之后留住对父级作用域的链接的话,相关闭包就会被建立起来。但这么说太绝对哦,其实每个函数都是一个闭包,,因为每个函数之少都有访问父级(也就是全局作用域)的权限。而全局作用域是不可能被破坏的。

我们再看一个例子。这次我们使用的是函数参数,该参数与函数的局部变量没有神马不同,但她们是被隐式创建的(就是没有var声明):

function F(a){
    var N = function(){
        retunr a;
    }
    a++;
    return N;
}

var inner = F(1);
inner();  //2

当我们的返回函数被调用时,a其实已经执行过一次递增操作了,所以inner()返回的是更新以后的值。

因此,由此我们可以看出,函数所绑定的是作用域本身,而不是该函数定义时该作用域中的变量或变量所返回的值

其实也不难吧,我们再来看下一张。

转载于:https://www.cnblogs.com/beyond-succeed/p/5813123.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值