关闭

JavaScript闭包

181人阅读 评论(0) 收藏 举报
分类:

  闭包,是指在语法域位某个特定的区域,具有持续参照(读写)位于该区域内
自身范围之外的执行域上的非持久型变量值能力的段落.这些外部执行域的
非持久型变量神奇地保留它们在闭包最初定义(或创建)时的值(举杯连结).


  闭包通常是在动态语言中才有的概念,它是某些可以访问外部执行域的段落
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();
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:24223次
    • 积分:447
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:22篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论