`

《Javascript高级程序设计(第3版)》闭包理解

阅读更多

“闭包是指有权访问另一个函数作用域中的变量的函数。”--《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版)超清中文PDF

    《JavaScript高级程序设计》(第3版)是一本深入探讨该语言精髓的权威书籍,它为读者提供了全面且深入的JavaScript知识,包括语言核心、DOM操作、BOM处理、事件处理以及面向对象编程等多个方面。 在书中,作者详细...

    JavaScript 高级程序设计(第3版)【附源代码】

    通过阅读《JavaScript高级程序设计(第3版)》,开发者不仅可以掌握JavaScript的基本用法,还能深入理解其内部机制,从而编写出更高效、更易于维护的代码。这本书对于想要提升JavaScript技能的前端开发者或全栈...

    JavaScript 高级程序设计 第3版

    《JavaScript高级程序设计》第三版是一本备受推崇的教材,它深入浅出地介绍了JavaScript的核心概念和技术,尤其在原型这一重要概念上的讲解备受赞誉。本文将深入探讨这本书中的关键知识点,帮助读者更好地理解和掌握...

    Javascript 高级程序设计(第3版)+ 源代码

    《JavaScript高级程序设计(第3版)》是深入理解JavaScript编程的一部经典著作,它详细讲解了JavaScript的核心概念、语法以及高级特性。这本书结合源代码,为读者提供了丰富的实践案例,帮助开发者深入学习和掌握这...

    Javascript 高级程序设计(第3版)带源代码

    《JavaScript高级程序设计(第3版)》是一本深入探讨该语言精髓的权威著作,它为读者提供了全面且深入的JavaScript知识,包括语言核心、DOM操作、BOM处理、事件处理以及面向对象编程等关键领域。 在本书中,作者...

    Javascript 高级程序设计(第3版)源代码

    "JavaScript高级程序设计(第3版)"是一本深入探讨该语言精髓的权威书籍,它为开发者提供了全面且深入的理解JavaScript的途径。这本书的源代码是学习者实践和理解书中理论的宝贵资源。 JavaScript的核心特性包括其...

    Javascrpt 高级程序设计(第3版)英文1

    【JavaScript 高级程序设计(第3版)】是一本针对JavaScript开发人员的高级指南,旨在涵盖该语言的各种核心特性和实用技术。本书是超级畅销书的最新版本,结合了ECMAScript 5和HTML5的新发展,为读者提供了一个全面...

    Javascrpt 高级程序设计(第3版)

    《JavaScript 高级程序设计(第3版)》是一本深度剖析JavaScript编程语言核心概念和技术的权威著作。随着计算机硬件的飞速发展以及浏览器性能的显著提升,JavaScript在Web开发中的地位日益凸显,催生了大量的...

    Javascript 高级程序设计

    **JavaScript 高级程序设计**,作为Web开发领域的一本经典...通过学习《JavaScript高级程序设计(第3版)》,你不仅能够掌握JavaScript的核心技术,还能了解到最新的Web开发趋势,为成为专业的Web开发者打下坚实基础。

    Javascript相关书籍从入门到精通

    第三本,《JavaScript高级程序设计(第3版)》,通常被誉为“红宝书”,是JavaScript学习的经典之作。这本书深入探讨了JavaScript的高级特性,包括闭包、原型链、异步编程、ES6及以后的新特性等。掌握了这些知识,你...

    javascriptgaojichengxushejidi3ban_downcc.zip

    通过阅读《JavaScript高级程序设计(第3版)》,开发者不仅能深化对JavaScript的理解,还能掌握编写高效、可维护代码的技巧。配合书中的实例和练习,将有助于提升实际开发能力。同时,提供的绿色资源网链接可能包含...

    js-高性能JavaScript-JavaScript语言精粹修订版

    #### 四、《JavaScript高级程序设计_第3版》 **知识点概述:** 1. **JavaScript核心特性:** - 深入理解JavaScript的基本特性和语言细节。 - 掌握ECMAScript 6+的新特性和API。 2. **DOM操作与BOM:** - 学习...

    清华大学计算机系列教材 编译原理 清华大学计算机系列教材 编译原理

    编译原理是计算机科学中的一个重要领域,主要研究如何将高级编程语言转换为机器可以理解的低级语言,即机器码。清华大学计算机系列教材中的《编译原理》是深入理解和学习这一主题的重要参考资料。该教材详细介绍了...

    编程汪喜欢的美味骨头

    #### 《JavaScript高级程序设计(第3版)》 - **作者**:Nicholas C. Zakas - **出版社**:人民邮电出版社 - **出版年**:2012年 - **页数**:748页 - **知识点概述**: - **JavaScript基础知识**:从变量、类型到...

Global site tag (gtag.js) - Google Analytics