`
ncs123
  • 浏览: 103386 次
  • 性别: 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的闭包

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

    JavaScript案例(简单易懂:注释非常全面)

    在这个"JavaScript案例(简单易懂:注释非常全面)"的压缩包中,包含了一系列精心编写的JavaScript示例,旨在帮助初学者和进阶者更好地理解和运用这门语言。 首先,这个压缩包提供了超过20个经典的JavaScript案例,这...

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

    简单来说,闭包是指一个函数能够记住并访问其自身范围(称为词法作用域)内的变量,即使在其外部调用该函数时,这些变量仍然保持存活状态。这种现象允许我们创建私有变量和持久的状态,同时防止全局作用域污染。 ...

    深入理解Javascript闭包 新手版

    JavaScript闭包是编程语言中一个重要的概念,尤其对于JavaScript开发者来说,理解闭包至关重要。闭包的本质是一个函数,这个函数能够访问并操作其外部作用域的变量,即使在其外部作用域已经不再存在的情况下也能保持...

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

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

    javaScript小游戏

    描述中的"简单易懂"可能意味着这些小游戏的代码结构清晰,适合初学者学习。JavaScript小游戏可以帮助开发者学习和巩固基础语法、事件处理、DOM操作、闭包、函数、对象和类等概念。通过实践,开发者可以更好地理解...

    通俗易懂地解释JS中的闭包

    闭包是JavaScript中一个核心且重要的概念,它允许函数访问并操作函数外部的变量。理解闭包,首先要明白JavaScript的作用域链原理。在JavaScript中,函数可以嵌套函数,内部函数可以访问外部函数的变量,这种访问关系...

    javascript 王者归来,源码,写的通俗易懂,很有代表性。值得学习

    在JavaScript的世界里,函数是第一公民,闭包、原型链、异步编程(如回调函数、Promise、async/await)等核心概念的理解至关重要。源码可能包含这些内容的实例,帮助我们更好地掌握它们。此外,DOM操作、事件处理、...

    head first javascript 中文版.pdf

    "Head First JavaScript"是一本面向初学者的优秀教材,旨在通过直观、易懂的方式教授JavaScript的核心概念和技术。这本书采用Head First系列的独特教学方法,以图像、故事和游戏等形式,帮助读者更轻松地理解和掌握...

    精通JavaScript与jQuery

    它的API设计简洁,使得编写复杂的JavaScript代码变得简单易懂。 在学习JavaScript时,你需要了解基本语法、函数和对象的创建、闭包、原型链以及异步编程,如回调函数、Promise和async/await。同时,理解JavaScript...

    Javascript技巧(经典,易懂)

    JavaScript,作为全球最广泛使用的编程语言之一,是创建交互式网页和应用程序的关键工具。这篇教程将深入探讨一些经典的JavaScript技巧,旨在帮助开发者提高代码效率、可读性和维护性。以下是一些关键知识点: 1. *...

    head first Javascript中文版

    《Head First JavaScript中文版》是一本专为初学者设计的JavaScript编程教材,旨在通过直观、易懂的方式引导读者深入理解JavaScript的核心概念和技术。JavaScript是一种广泛应用于网页和互联网应用的脚本语言,它...

    Head First JavaScript(中文版)

    《Head First JavaScript(中文版)》是一本专为初学者设计的JavaScript编程教材,它以易懂、生动的方式深入浅出地介绍了JavaScript的核心概念和技术。这本书以高清PDF格式呈现,适合那些希望快速入门并深入理解...

    javascript教材

    本教材通过PPT形式,将这些知识点以直观、易懂的方式呈现,适合初学者系统学习JavaScript的基础知识,同时对于有一定经验的开发者,也可以作为复习和巩固的重要资料。通过深入学习和实践,你将能够熟练地运用...

    JavaScript不可多得的优秀教程.doc

    JavaScript的高级特性,如闭包、模块化、Promise等,使得开发者能够构建复杂的前端应用。现代JavaScript框架,如React、Vue和Angular,进一步简化了大型应用的开发,提供组件化、状态管理和路由等功能。 总的来说,...

    《深入浅出JavaScript》PDF版本下载.txt

    本书旨在通过浅显易懂的语言,帮助读者深入理解JavaScript语言的核心概念与技术细节,并结合实际开发场景进行讲解,让读者不仅知其然,还能知其所以然。 #### 二、书籍内容亮点 - **基础知识**:包括变量、数据类型...

Global site tag (gtag.js) - Google Analytics