`
mengqingyu
  • 浏览: 328632 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

js闭包

阅读更多
最近在做前台表单合计功能时,用到了动态绑定标签响应事件,遇到了闭包的问题,下面阐述一下我对闭包的理解和遇到的问题,如有不对请多多指教。
闭包是内部函数使用了函数外部的局部变量,当执行完外部代码之后,本来它的作用域已经结束,但它的变量并没有被销毁,因为它的内部函数正在使用它,它并不是使用该变量创建时的值,相反,它使用外部函数中该变量最后的值。
官方的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

//示例代码
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闭包可被利用的常见场景

    JS闭包可被利用的常见场景。值得保留的文档。值得一看

    Javascript 闭包完整解释

    Javascript 闭包完整解释

    js闭包详细讲解

    js闭包的详细讲解

    js闭包个人理解

    js闭包的个人理解

    JavaScript闭包

    Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态...本文将以例子入手来介绍Javascript闭包的语言特性,并结合一点 ECMAScript语言规范来使读者可以更深入的理解闭包。

    js闭包写法学习demo

    js闭包写法学习demo

    js闭包理解之倒计时

    网上大多只是讲解js闭包的大概意思和小例子,但真实用于项目中又该怎么用呢。这个例子真实的告诉大家在项目中的用法

    js闭包的理解以及作用.docx

    JS闭包理解 什么是闭包? 当有一个函数想要访问另一个函数内部的变量,这个是访问不了的。所有我们要用闭包来访问。所以简单的来说,闭包就是连接函数内部和外部的一座桥梁,通过闭包我们能够访问其他函数内部的...

    javascript 闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。

    javascript闭包详解中文word版

    资源名称:javascript闭包详解 中文word版   内容简介: Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C 的程序员来说是一个新的...

    尚硅谷——JavaScript闭包

    JavaScript闭包 JavaScript闭包 JavaScript闭包 JavaScript闭包

    【JavaScript源代码】js闭包和垃圾回收机制示例详解.docx

    js闭包和垃圾回收机制示例详解  目录 前言 正文  1.闭包  1.1闭包是什么?  1.2闭包的特性 1.3理解闭包  1.4闭包的主要实现形式  1.5闭包的优缺点  1.6闭包的使用  2.垃圾回收机制 总结  前言  正文  ...

    JS闭包经典

    闭包一点即通 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。

    js闭包学习

    javaScript无可争议的是如今前台开发最常用的技术,该文档讲解了javaScript中闭包技术,在jquery中大量的使用了该技术,学好可以更好的理解学习jquery。

    【JavaScript源代码】详解JavaScript闭包问题.docx

    详解JavaScript闭包问题  闭包是纯函数式编程语言的传统特性之一。通过将闭包视为核心语言构件的组成部分,JavaScript语言展示了其与函数式编程语言的紧密联系。由于能够简化复杂的操作,闭包在主流JavaScript库...

    javaScript闭包技术资料

    javaScript闭包技术资料

    js闭包的介绍

    js闭包的介绍

    javascript 闭包实例下载

    javascript 闭包实例下载

    javascript深入理解js闭包.docx

    javascript深入理解js闭包.docx

    JS中的闭包理解。。。。。。。。

    js闭包 • 每个函数都有一个包含词法环境的执行上下文,它的词法环境确定了函数内的变量赋值以及对外部环境的引用。看上去函数“记住”了外部环境,但其实上是这个函数有个指向外部环境的引用。这就是“闭包”的...

Global site tag (gtag.js) - Google Analytics