您的位置:首页 > Web前端 > JavaScript

JavaScript闭包

2015-11-21 17:46 399 查看
  闭包,是指在语法域位某个特定的区域,具有持续参照(读写)位于该区域内

自身范围之外的执行域上的非持久型变量值能力的段落.这些外部执行域的

非持久型变量神奇地保留它们在闭包最初定义(或创建)时的值(举杯连结).

  闭包通常是在动态语言中才有的概念,它是某些可以访问外部执行域的段落

JavaScript中的闭包,是通过定义在函数体内部的function来实现的.

  闭包和函数的关系,应当类似于一种动态生静态,结构和实例的关系.

  闭包可以外部环境,也可以写外部环境

例子:

//定义一个计数器生成函数,生成某种类型的计数器

function counter(iden,addi){

  //闭包"外部",函数counter"内部"的参数iden的值在闭包被调用时的时候会被改变

  return function(){

    //改变iden的值

    iden = iden+addi;

    console.log("--iden"+iden);

    return iden;

  }

}

//产生一个从0开始计数,每次计数值加1的计数器

var c1 = counter(0,1);

//产生一个从10开始计数,每次数值减1的计数器

var c2 = counter(10,-1);

for(var i=0 ; i<10 ;i++){

  //循环计数

  c1();

}

for(var i=0 ; i<10 ;i++){

  //循环计数

  c2();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: