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();
}
自身范围之外的执行域上的非持久型变量值能力的段落.这些外部执行域的
非持久型变量神奇地保留它们在闭包最初定义(或创建)时的值(举杯连结).
闭包通常是在动态语言中才有的概念,它是某些可以访问外部执行域的段落
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();
}
相关文章推荐
- 一、JavaScript的输出
- WebKit之js解析和执行初始
- JS字符串对象
- 兼职面试前准备-JavaScript(1)
- ExtJS介绍与Hello World
- JS播放声音
- JS播放声音
- javascript基础之面向对象(中)
- 分享一个基于长连接+长轮询+原生的JS及AJAX实现的多人在线即时交流聊天室
- 众人口中的JAVASCRIPT
- JSP九大内置对象与Servlet学习笔记
- 分享经典的JavaScript开发技巧
- JAVASCRIPT
- 递归遍历JS的对象的每个属性
- DropZone.js入门
- jsp 上传文件
- 操作符、语句、函数——Javascript高级程序设计
- JS七种加密解密方法
- 02 计算字符串表达式 [类似于js eval函数]
- 超详细的javascript数组方法汇总