最近在做前台表单合计功能时,用到了动态绑定标签响应事件,遇到了闭包的问题,下面阐述一下我对闭包的理解和遇到的问题,如有不对请多多指教。
闭包是内部函数使用了函数外部的局部变量,当执行完外部代码之后,本来它的作用域已经结束,但它的变量并没有被销毁,因为它的内部函数正在使用它,它并不是使用该变量创建时的值,相反,它使用外部函数中该变量最后的值。
官方的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
//示例代码
var array = [];
for(var i=0;i<4;i++)
{
var obj = {};
obj.i = i;
obj.text = function(){ //内部函数此时并没有运行,并且外部函数被内部函数使用,并没有被销毁,直到运行完毕,在下面调用的时候才使用i变量这时候变量值已经是4了。
alert(i);
}
array.push(obj);
}
array[0].text(); //4
array[1].text(); //4
//可以解决上述问题
var array = [];
for(var i=0;i<4;i++)
{
var obj = {};
obj.text = function(i){ //立即执行函数,为每次循环的函数都传入了运行时变量值。
return function(){
alert(i);
}
}(i)
array.push(obj);
}
array[0].text(); //0
array[1].text(); //1
var array = [];
for(var i=0;i<4;i++)
{
var obj = {};
obj.i = i;
obj.text = function(){ //为每次循环的函数都创建了独立的变量值,当最后函数被调用时候,调用了自身运行时的变量。
alert(this.i);
}
array.push(obj);
}
array[0].text(); //0
array[1].text(); //1
分享到:
相关推荐
JS闭包可被利用的常见场景。值得保留的文档。值得一看
Javascript 闭包完整解释
js闭包的详细讲解
js闭包的个人理解
Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态...本文将以例子入手来介绍Javascript闭包的语言特性,并结合一点 ECMAScript语言规范来使读者可以更深入的理解闭包。
js闭包写法学习demo
网上大多只是讲解js闭包的大概意思和小例子,但真实用于项目中又该怎么用呢。这个例子真实的告诉大家在项目中的用法
JS闭包理解 什么是闭包? 当有一个函数想要访问另一个函数内部的变量,这个是访问不了的。所有我们要用闭包来访问。所以简单的来说,闭包就是连接函数内部和外部的一座桥梁,通过闭包我们能够访问其他函数内部的...
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
资源名称:javascript闭包详解 中文word版 内容简介: Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C 的程序员来说是一个新的...
JavaScript闭包 JavaScript闭包 JavaScript闭包 JavaScript闭包
js闭包和垃圾回收机制示例详解 目录 前言 正文 1.闭包 1.1闭包是什么? 1.2闭包的特性 1.3理解闭包 1.4闭包的主要实现形式 1.5闭包的优缺点 1.6闭包的使用 2.垃圾回收机制 总结 前言 正文 ...
闭包一点即通 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
javaScript无可争议的是如今前台开发最常用的技术,该文档讲解了javaScript中闭包技术,在jquery中大量的使用了该技术,学好可以更好的理解学习jquery。
详解JavaScript闭包问题 闭包是纯函数式编程语言的传统特性之一。通过将闭包视为核心语言构件的组成部分,JavaScript语言展示了其与函数式编程语言的紧密联系。由于能够简化复杂的操作,闭包在主流JavaScript库...
javaScript闭包技术资料
js闭包的介绍
javascript 闭包实例下载
javascript深入理解js闭包.docx
js闭包 • 每个函数都有一个包含词法环境的执行上下文,它的词法环境确定了函数内的变量赋值以及对外部环境的引用。看上去函数“记住”了外部环境,但其实上是这个函数有个指向外部环境的引用。这就是“闭包”的...