闭包

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

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外的一个变量引用的时候,就创建了一个闭包。
 

function mytest() {
   for(var i = 0; i < 5; i ++)
      setTimeout(function(){ console.log(i);},0);
}

var c =mytest();

c();

 

先看一下定义:
setTimeout(code,millisec)
参数 描述
code 必需。要调用的函数后要执行的 JavaScript 代码串。
millisec 必需。在执行代码前需等待的毫秒数。

 

posted @ 2014-10-20 14:26  smodi  阅读(153)  评论(0编辑  收藏  举报