“闭包是指有权访问另一个函数作用域中的变量的函数。”--《Javascript高级程序设计(第3版)》
看以下代码:
<script type="text/javascript"> function outer() { var i = 10; return function() { return i++; } } var inner = outer(); var str = ""; for (var i=0;i<5;i++) { str += inner()+" "; } document.write(str); </script>
结果:10 11 12 13 14
认为闭包是一个现象,是内部函数(function() {return i++})引用了外部函数(outer)的变量(i),且被返回到外部去(var inner = outer()),导致外部函数的执行环境没被释放(i的值得以保存)的现象。
看到那句话的时候,才意识到自己的理解是错误的。上述现象是闭包的特性、现象,这种奇特的现象,可以通过结合作用域链、垃圾收集的知识点得到解释。
现在更新下知识:闭包是一个函数。我们可以通过判断该函数是否能够访问其他函数作用域中的变量、函数来判断一个函数是不是一个闭包。
提出疑问:当一个函数有权限但没有访问其可访问的其他函数的变量、函数时,它还是一个闭包吗?如果根据书中的定义,那么答案是肯定的。
如下面的代码:
<script type="text/javascript"> function demo1(name){ this.getName = function() { return name; } } var inst = new demo1("Lcllao"); alert(inst.getName());//这个应该是了,通过new方式执行函数test,返回了当时的this对象。通过getName访问当时作用域上的name变量。 demo1("Lcllao");//在这个时候,上面的匿名函数是闭包吗? function demo2() { var i = 0; return function() {//按照上述定义,这个匿名函数应该也是一个闭包。他有权但没访问demo2的变量i。 return ""; } } </script>
相关推荐
《JavaScript高级程序设计》(第3版)是一本深入探讨该语言精髓的权威书籍,它为读者提供了全面且深入的JavaScript知识,包括语言核心、DOM操作、BOM处理、事件处理以及面向对象编程等多个方面。 在书中,作者详细...
通过阅读《JavaScript高级程序设计(第3版)》,开发者不仅可以掌握JavaScript的基本用法,还能深入理解其内部机制,从而编写出更高效、更易于维护的代码。这本书对于想要提升JavaScript技能的前端开发者或全栈...
《JavaScript高级程序设计》第三版是一本备受推崇的教材,它深入浅出地介绍了JavaScript的核心概念和技术,尤其在原型这一重要概念上的讲解备受赞誉。本文将深入探讨这本书中的关键知识点,帮助读者更好地理解和掌握...
《JavaScript高级程序设计(第3版)》是深入理解JavaScript编程的一部经典著作,它详细讲解了JavaScript的核心概念、语法以及高级特性。这本书结合源代码,为读者提供了丰富的实践案例,帮助开发者深入学习和掌握这...
《JavaScript高级程序设计(第3版)》是一本深入探讨该语言精髓的权威著作,它为读者提供了全面且深入的JavaScript知识,包括语言核心、DOM操作、BOM处理、事件处理以及面向对象编程等关键领域。 在本书中,作者...
"JavaScript高级程序设计(第3版)"是一本深入探讨该语言精髓的权威书籍,它为开发者提供了全面且深入的理解JavaScript的途径。这本书的源代码是学习者实践和理解书中理论的宝贵资源。 JavaScript的核心特性包括其...
【JavaScript 高级程序设计(第3版)】是一本针对JavaScript开发人员的高级指南,旨在涵盖该语言的各种核心特性和实用技术。本书是超级畅销书的最新版本,结合了ECMAScript 5和HTML5的新发展,为读者提供了一个全面...
《JavaScript 高级程序设计(第3版)》是一本深度剖析JavaScript编程语言核心概念和技术的权威著作。随着计算机硬件的飞速发展以及浏览器性能的显著提升,JavaScript在Web开发中的地位日益凸显,催生了大量的...
**JavaScript 高级程序设计**,作为Web开发领域的一本经典...通过学习《JavaScript高级程序设计(第3版)》,你不仅能够掌握JavaScript的核心技术,还能了解到最新的Web开发趋势,为成为专业的Web开发者打下坚实基础。
《JavaScript入门经典(第3版)》是学习这一语言的经典教材,涵盖了从基础到进阶的广泛主题。例子6-10章是这本书的重要部分,它们深入浅出地讲解了JavaScript的核心概念和技术。 在Chapter 06“控制流程”中,你会...
《JavaScript入门经典(第3版)》是学习这一语言的经典教材,涵盖了基础到进阶的知识点。例子1-5章主要涉及到JavaScript的基础语法、变量、数据类型、控制结构以及函数等内容。 1. **基础语法**:JavaScript是一种弱...
《JavaScript入门经典(第3版)》是一本专为初学者设计的教程,旨在帮助读者掌握JavaScript的基础知识并理解其在实际开发中的应用。这个压缩包包含了书中所有的实例代码,这些实例对于学习和理解JavaScript的语法、...
本书《JavaScript高级程序设计(第3版)》为深入学习提供了很好的参考,通过专题学习笔记,可以逐步掌握JavaScript的各个知识点,并且能够随着复习和实践得到进一步的提升。 在学习的过程中,开发者会发现...
在深入理解JavaScript对象时,作用域、执行环境和闭包是不可忽视的概念。对象和它们的方法通常在特定的执行环境中运行,这影响着变量和函数的作用域。闭包是一种特殊的函数,它能够“记住”并访问其词法作用域,即使...
第三本,《JavaScript高级程序设计(第3版)》,通常被誉为“红宝书”,是JavaScript学习的经典之作。这本书深入探讨了JavaScript的高级特性,包括闭包、原型链、异步编程、ES6及以后的新特性等。掌握了这些知识,你...
通过阅读《JavaScript高级程序设计(第3版)》,开发者不仅能深化对JavaScript的理解,还能掌握编写高效、可维护代码的技巧。配合书中的实例和练习,将有助于提升实际开发能力。同时,提供的绿色资源网链接可能包含...
#### 四、《JavaScript高级程序设计_第3版》 **知识点概述:** 1. **JavaScript核心特性:** - 深入理解JavaScript的基本特性和语言细节。 - 掌握ECMAScript 6+的新特性和API。 2. **DOM操作与BOM:** - 学习...