码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中闭包

时间:2017-03-30 23:06:39      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:环境   无法   blog   返回   其他   函数   保护   为什么   显示   

什么是闭包

"官方"的解释是 : 所谓"闭包",指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

 

闭包代码:

function a(){
  var i=0;
  function b(){
   alert(++i);
 }    
 return b;
}
var c=a();
c();

这段代码有两个特点:

1 . 函数b嵌套 在函数a内部;

2 . 函数a返回函数b;

  这样在执行完 var c=a() 后,变量c实际上是指向了函数b,在执行c() 后就会弹出一个窗口显示i的值(第一次为1),这短代码就创建了一个闭包,为什么?因为函数a外的变量c引用函数a内的函数b,就是说:

     当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

 

定义:

如果在一个内部函数里,对外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就就被认为是闭包。

 

应用场景:

1 . 保护函数内的变量安全。函数a中i只有函数b才能访问,而无法通过其他途径访问,因此保护了i的安全性。

2 . 在内存中维持一个变量。 由于闭包,函数a中i一直存在于内存中,因此每次执行c(),都会给i自加1。

 

javascript中闭包

标签:环境   无法   blog   返回   其他   函数   保护   为什么   显示   

原文地址:http://www.cnblogs.com/xin9984/p/6648752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!