闭包是一个很陌生的应用,在javascript中。至今在我的工作中从来没有看过,但是在看《javascript权威指南》的时候又一次看到闭包,渐渐开始对起了兴趣。不管有没有用先学会了再说。
我认为之所以在javascript中会产生闭包,最重要有两点:1.javascript是解释性语言,他的垃圾回收机制造成的。2.javascript是可以直接返回一个函数的。请看下面的代码:
function a(){
var b=0;
function c(){
return b++;
}
return c;
}
var b=a();
console.log(b());//0
console.log(b());//1
console.log(b());//2
console.log(b());//3
console.log(b());//4
console.log(b());//5
console.log(b());//6
console.log(b());//7
console.log(b());//8
console.log(b());//9
按照正常的逻辑,函数a执行结束后,变量b就应该被回收,可是函数c引用到了变量b,所以变量b一直都没有被回收掉。
这就是一个闭包,至于他有什么用,我现在还不知道。可能以后写代码的时候尽可能要避免这种用法,因为一个变量如果不被回收是要占内存的,所以我们还是应该减少这样的使用。但是如果你是个js高手就要另当别论了。
这就是我的理解,有什么错误欢迎高人指点一二。
分享到:
相关推荐
JavaScript中闭包之浅析解读(必看篇)_.docx
下面小编就为大家带来一篇JavaScript中闭包之浅析解读(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本文实例分析了javascript中闭包概念与用法。分享给大家供大家参考,具体如下: 1.问题的引出,什么时候会遇到闭包? 首先因为JS是没有块状作用域的,但是有函数作用域即函数作为了局部变量之间的界限,不同函数内的...
本文主要介绍了JavaScript中闭包的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
本文结合 ECMA 262 规范详解了闭包的内部工作机制,让 JavaScript 编程人员对闭包的理解从“嵌套的函数”深入到“标识符解析、执行环境和作用域链”等等 JavaScript 对象背后的运行机制当中,真正领会到闭包的实质。
js闭包 • 每个函数都有一个包含词法环境的执行上下文,它的词法环境确定了函数内的变量赋值以及对外部环境的引用。...• JavaScript中闭包作用域是词法作用域,即它在代码写好之后就被静态决定了它的作用域。
JavaScript闭包 JavaScript闭包 JavaScript闭包 JavaScript闭包
闭包是ECMAScript (JavaScript)最强大的特性之一,但用好闭包的前提是必须理解闭包。闭包的创建相对容易,人们甚至会在不经意间创建闭包,但这些无意创建的闭包却存在潜在的危害,尤其是在比较常见的浏览器环境下...
1、什么是闭包 闭包是有权访问另一个函数作用域的变量的函数。 简单的说,Javascript允许使用内部函数—即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的...
Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态...本文将以例子入手来介绍Javascript闭包的语言特性,并结合一点 ECMAScript语言规范来使读者可以更深入的理解闭包。
资源名称:javascript闭包详解 中文word版 内容简介: Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C 的程序员来说是一个新的...
闭包(closure)是Javascript语言的一个...小编之前一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什么,有什么用,本文把自己的理解些出来分享一下,希望不理解JavaScript闭包的朋友们看了之后能够理解闭包!
为了帮助大家快速和较好地理解JavaScript函数中的闭包,本文对JavaScript的闭包进行了分析并进行简易的代码演示,希望本文能够给有需要的人带来一点小小的帮助。
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
深入理解javascript原型和闭包(01)——一切都是对象 深入理解javascript原型和闭包(02)——函数和对象的关系
理解 JavaScript 闭包 要成为高级 JavaScript 程序员,就必须理解闭包
Javascript 闭包完整解释