闭包函数

闭包函数又称绑定函数,一个显著的特征是,当函数在不在它所处的变量作用范围时,仍然可以使用本地变量。

(1)作为值从另一个函数中返回。(作为值从函数返回的函数都是闭包函数)

function A(){
 var temp = "local temp";
B = function(){
 alert(temp);
}
return B;
}

var myFunc = new A();
myFunc();
如上述代码段所示,temp作为本地变量,myFunct位于函数的作用域外部,按理来说,并不能调用temp。

但在这段代码中,实际上是可以使用的,这就是闭包函数。

(2)利用变量作用范围也可以产生闭包函数。

var F;
function A(){
   var temp = "local temp";
    F = function(){
      alert(temp);
   }
}

A();
F();
在本例中,F函数仍然可以调用本地变量temp.但是F所处的环境中其他程序并不能调用这个变量。

总的来说,闭包函数的核心就是,函数能够在任何时候,任何环境下访问函数在定义时的私有变量,这个私有变量在函数被调用的环境中是不能直接访问的。


闭包函数的应用:匿名自执行函数

想要理解闭包函数,首先必须理解js中的函数作用域和作用域链问题。

关于函数作用域,这里有一篇很好的文章:http://blog.csdn.net/yueguanghaidao/article/details/9568071


举个例子

<pre name="code" class="javascript">for(var i = 0; i < 10; i ++){
  setTimout(function(){
     alert(i);
},1000);
}

 在这段代码中,作用链是function匿名函数-> setTimeout函数->window, 匿名函数的i值在该函数中并没有被定义,因此需要向上一级作用域寻找。又因为在第一次执行setTimeout函数之前,for循环肯定已经完成了,因此,此时i的值为10。 

所以这段代码的输出结果会alert 十次数字10.





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值