`
ncs123
  • 浏览: 100124 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

javascript 闭包简单易懂

阅读更多
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中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
1
1
分享到:
评论

相关推荐

    JavaScript核心(对象、原型、继承、上下文、闭包、this).pdf

    面向对象概念(对象封装,各种继承,闭包原理,this作用域等)介绍清晰易懂

    用最通俗易懂的代码帮助新手理解javascript闭包 推荐

    最近看了几篇有关javascript闭包的文章,包括最近正火的汤姆大叔系列,还有《javascript高级程序设计》中的文章,……我看不懂,里面有些代码是在大学教科书中看都没看过的,天书一般。幸好最近遇到两本好书《ppk on...

    让你一句话理解闭包(简单易懂)

    接触javascript很久了,每次理解闭包都似是而非,最近在找Web前端的工作,所以需要把基础夯实一下。 本文是参照了joy_lee的博客 闭包 在她这篇博客的基础上以批注的形式力争把我的理解阐述出来,如果有不当之处,...

    Javascript闭包与函数柯里化浅析

    主要介绍Javascript闭包与柯里化,通俗易懂,需要的朋友可以参考下。

    javascript闭包功能与用法实例分析

    本文实例讲述了javascript闭包功能与用法。分享给大家供大家参考,具体如下: 理解闭包 闭包这个东西,确实是很麻烦。之前我自己的理解也是有一点误差,所以今天将文章修改修改,争取将自己的理解进一步准确化。 ...

    跟我学习javascript的闭包

    陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是不是非常明白,最近偶然看了一下 jQuery基础教程 的附录,发现附录A对JavaScript的闭包的介绍简单易懂,于是...

    javascript 设计模式与开发实践

    1、需要对原型链和闭包有一定的基础 2、案例比较经典并且通熟易懂,讲解特别清晰 3、知识点的归纳总结也比较突出重点,方便二次学习以及做笔记 字体清晰不模糊,看起来舒服。 算法导论 第三版 中文版 清晰 PDF,...

    ECMAScript概述

    javascript原理:简明易懂 闭包 原型链 作用域链 函数对象 VO

    JQuery基础教程(第4版)

    本书是jQuery 经典技术教程的最新升级版 涵盖jQuery 1.10.x 和jQuery 2.0.x 本书前6 章以通俗易懂 , 。 的方式讲解了jQuery 的核心组件 包括jQuery 的选择符 事件 动画 DOM 操作 Ajax 支持等 第7 章 , 、 、 ...

    jQuery基础教程 第四版

    本书是 jQuery 经典技术教程...附录 A 特别讲解了 JavaScript 中闭包的概念,以及如 何在 jQuery 中有效地使用闭包。附录 B 讲解了使用 QUnit 测试 JavaScript 代码的必备知识。附录 C 给出了 jQuery API 的快速参考。

    jQuery基础教程(第四版)

    jQuery基础教程(中文第四版)是jQuery经典技术...附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。

    jQuery (4th)

    jQuery基础教程(中文第四版)是jQuery经典技术...附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。

    jQuery基础教程(第4版)李松峰(译) 中文 非扫描版 高清带书签

    附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。 本书注重理论与实践相结合,由浅入深、循序渐...

    jQuery基础教程

    附录A 特别讲解了JavaScript 中闭包的概念,以及如 何在jQuery 中有效地使用闭包。附录B 讲解了使用QUnit 测试JavaScript 代码的必备知识。附录C 给出了 jQuery API 的快速参考。 本书注重理论与实践相结合,...

    jQuery基础教程--第四版(2013年出版)

    附录A特别讲解了JavaScript中闭包的概念,以及如 何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了 jQuery API的快速参考。 本书注重理论与实践相结合,由浅入深、循序...

    jQuery基础教程(第四版),完整高清版

    附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。  《jQuery基础教程(第4版)》注重理论与实践...

    jQuery jQuery第四版PDF

    附录A特别讲解了JavaScript中闭包的概念,以及如何在jQuery中有效地使用闭包。附录B讲解了使用QUnit测试JavaScript代码的必备知识。附录C给出了jQuery API的快速参考。 本书注重理论与实践相结合,由浅入深、循序...

Global site tag (gtag.js) - Google Analytics