1.什么是闭包
”官方“的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
通俗的说:JavaScript中所有的function都是一个闭包。不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的“闭包”。
2.举例说明
<script type="text/javascript">
var n = 1;//全局变量
function test1(){
var n2 = 2;//局部变量
}
alert(n2);//不能访问局部变量
</script>
如果我们想要访问局部变量,该怎么办呢?”闭包“就能解决这个问题,代码如下
<script type="text/javascript">
var n = 1;
function test1(){
var n2 = 2;
function inner(){ //inner是test1的嵌套函数,inner的存在依赖于test1
return n2;
}
return inner; //注意:返回的是inner函数
}
var value = test1(); //全局变量value引用inner函数(test1函数返回的是inner函数)
alert(value());//返回2
</script>
上面注解的3行就构成了”闭包“
3.闭包的优缺点
优点:(1).可以访问局部变量
(2).让这些变量的值始终保持在内存中。
优点一上面已经演示了,优点二看如下代码:
<script type="text/javascript">
var n = 1;
function test1(){
var n2 = 2;
function inner(){
n2++;//n2=3
return n2;
}
return inner;
}
var value = test1();
value();//n2=3
value();//n2=4
alert(value());//n2=5
</script>
解释:因为全局变量value引用函数inner,inner依赖于test1函数,全局变量一直都在内存中,所以test1函数的资源也一直都在函数中
缺点:正是由于优点二,变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
分享到:
相关推荐
面向对象概念(对象封装,各种继承,闭包原理,this作用域等)介绍清晰易懂
最近看了几篇有关javascript闭包的文章,包括最近正火的汤姆大叔系列,还有《javascript高级程序设计》中的文章,……我看不懂,里面有些代码是在大学教科书中看都没看过的,天书一般。幸好最近遇到两本好书《ppk on...
接触javascript很久了,每次理解闭包都似是而非,最近在找Web前端的工作,所以需要把基础夯实一下。 本文是参照了joy_lee的博客 闭包 在她这篇博客的基础上以批注的形式力争把我的理解阐述出来,如果有不当之处,...
主要介绍Javascript闭包与柯里化,通俗易懂,需要的朋友可以参考下。
本文实例讲述了javascript闭包功能与用法。分享给大家供大家参考,具体如下: 理解闭包 闭包这个东西,确实是很麻烦。之前我自己的理解也是有一点误差,所以今天将文章修改修改,争取将自己的理解进一步准确化。 ...
陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是不是非常明白,最近偶然看了一下 jQuery基础教程 的附录,发现附录A对JavaScript的闭包的介绍简单易懂,于是...
1、需要对原型链和闭包有一定的基础 2、案例比较经典并且通熟易懂,讲解特别清晰 3、知识点的归纳总结也比较突出重点,方便二次学习以及做笔记 字体清晰不模糊,看起来舒服。 算法导论 第三版 中文版 清晰 PDF,...
javascript原理:简明易懂 闭包 原型链 作用域链 函数对象 VO
本书是jQuery 经典技术教程的最新升级版 涵盖jQuery 1.10.x 和jQuery 2.0.x 本书前6 章以通俗易懂 , 。 的方式讲解了jQuery 的核心组件 包括jQuery 的选择符 事件 动画 DOM 操作 Ajax 支持等 第7 章 , 、 、 ...
本书是 jQuery 经典技术教程...附录 A 特别讲解了 JavaScript 中闭包的概念,以及如 何在 jQuery 中有效地使用闭包。附录 B 讲解了使用 QUnit 测试 JavaScript 代码的必备知识。附录 C 给出了 jQuery API 的快速参考。
jQuery基础教程(中文第四版)是jQuery经典技术...附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。
jQuery基础教程(中文第四版)是jQuery经典技术...附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。
附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。 本书注重理论与实践相结合,由浅入深、循序渐...
附录A 特别讲解了JavaScript 中闭包的概念,以及如 何在jQuery 中有效地使用闭包。附录B 讲解了使用QUnit 测试JavaScript 代码的必备知识。附录C 给出了 jQuery API 的快速参考。 本书注重理论与实践相结合,...
附录A特别讲解了JavaScript中闭包的概念,以及如 何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了 jQuery API的快速参考。 本书注重理论与实践相结合,由浅入深、循序...
附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。 《jQuery基础教程(第4版)》注重理论与实践...
附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。 本书注重理论与实践相结合,由浅入深、循序...