`
zccst
  • 浏览: 3323031 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js-闭包(权威指南版)

阅读更多
作者:zccst

//1,闭包是词法作用域(作用域在定义时决定,不是在调用时决定)
var scope = "global scope";
function checkscope(){
    var scope = "local scope";
    function f(){
        return scope;
    }
    return f;
};
var r = checkscope()();
console.log(r);//local scope


//2,闭包可以捕捉到单个函数调用的局部变量,并将这些局部变量用做私有状态。
var uniqueInteger = (function(){
                        var counter = 0;
                        return function(){
                            return counter++;
                        }
                    }());
//分析:这是一个嵌套的函数。当外部函数返回之后,其它任何代码都无法访问counter变量,只有内部的函数才能访问它。

//引申1:
function counter(){
    var n = 0;
    return {
        count:function(){return n++;},
        reset:function(){n=0;}
    };
}
var c = counter(), d = counter();
console.log(c.count());//0
console.log(d.count());//0
console.log(c.reset());
console.log(c.count());//0
console.log(d.count());//1
/*
批注:每次调用counter(),都会创建一个新的作用域链和一个新的私有变量。因此,如果调用counter()两次,则会得到两个计算器对象,而且彼此包含不同的私有变量,调用其中一个计数器对象的count()和reset()不会影响到另外一个对象。
*/


//引申2:
function counter(n){
    return {
        get count(){return n++;},
        set count(m){
            if(m >= n) n=m;
            else throw Error("只能越来越大,不能越来越小");
        }
    };
}
var c = counter(1000);
console.log(c.count);//1000
console.log(c.count);//1001
c.count = 2000;
console.log(c.count);//2000
c.count = 2000;//Error
/*
批注:这个版本并未声明局部变量,只是使用参数n来保存私有状态,属性存取器方法可以访问n,这样的话,调用counter()的函数就可以制定私有变量的初始值了。
*/


function constfuncs(){
    var funcs = [];
    for(var i= 0; i<10; i++){
        funcs[i] = function(){
            return i;
        };
    }
    return funcs;
}
var funcs = constfuncs();
console.log(funcs[5]());//10
/*批注,这些闭包都是在同一个函数调用中定义的,因此他们可以共享变量i。
所有的闭包都共享这一个值,因此数组中的函数的返回值都是同一个值,这不是我们想要的结果。
*/

//还有注意this的关键字,而不是变量。每个函数调用都包含一个this值,如果闭包在外部函数里是无法访问this的,除非外部函数将this转存为一个变量:
var self = this;//将this保存至一个变量中,以便嵌套的函数能够访问它。




如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    闭包权威指南] Closure:The Definitive Guide Michael Bolin

    ### 闭包权威指南 #### 一、书籍概述与作者介绍 《闭包:权威指南》(Closure: The Definitive Guide)由Michael Bolin撰写,于2010年由O'Reilly Media出版。本书是关于JavaScript闭包的深度解析与应用实践的权威...

    计算机软件-编程源码-JcvaScript 权威指南.zip

    在“计算机软件-编程源码-JavaScript 权威指南.zip”这个压缩包中,我们可以预见到它包含了关于JavaScript编程的权威性指南,帮助开发者深入理解和掌握这一强大的工具。 JavaScript起源于1995年,由Netscape公司的...

    JavaScript权威指南(JavaScript犀牛书一本)

    在19MB的7z压缩文件中包含的《JavaScript权威指南》PDF版,提供了方便的电子阅读体验。PDF文件格式可以确保文本和排版的保真度,使得读者在电脑、平板或手机上都能轻松阅读。 这本书的知识点广泛且深入,主要包括...

    javascript权威指南第五版(英文原版)

    《JavaScript权威指南第五版》是JavaScript编程领域内一本广受赞誉的经典著作,通常被称为“犀牛书”。这本书的英文原版提供了对JavaScript语言最原始、最深入的理解,帮助读者掌握其核心概念,以及作者David ...

    JS权威指南(第6版)2012版扫描版

    《JS权威指南(第6版)2012版扫描版》是一本深入解析JavaScript语言的重量级著作,由著名编程专家Douglas Crockford等人撰写。这本书详细介绍了JavaScript的核心概念、语法和特性,旨在帮助读者全面理解并掌握这门广泛...

    javascript权威指南_高清版pdf_1

    《JavaScript权威指南》是一本备受推崇的编程教材,专门针对JavaScript这门强大的脚本语言进行深入浅出的讲解。这本书的高清版PDF提供了一个详细的学习路径,帮助读者掌握JavaScript的核心概念和技术。 首先,...

    JavaScript权威指南(第6版)中文版.pdf百度网盘下载地址

    根据提供的文件信息,我们可以推断出这是一本关于JavaScript编程语言的专业书籍——《JavaScript权威指南》第六版的中文版本,并提供了该书PDF格式的百度网盘下载链接。下面将基于这个信息来提炼出相关的JavaScript...

    JavaScript权威指南(第六版 中+英+源代码)

    《JavaScript权威指南(第六版)》是一本深受开发者喜爱的教材,由David Flanagan撰写,全面深入地介绍了JavaScript的核心概念和技术。 该书的中文版是非扫描版,这意味着读者可以方便地在电子设备上阅读,避免了...

    《JavaScript权威指南(第5版)》--高清带目录

    《JavaScript权威指南(第5版)》是目前最为权威的JavaScript学习参考书籍之一。JavaScript是一种广泛使用的客户端脚本语言,它嵌入在HTML中,能够让网页具有动态功能和交互性。这本书涵盖了JavaScript的基础知识、...

    javascript权威指南第6版 中英文 附源码(0分资源)

    《JavaScript权威指南第6版》是一本深受程序员喜爱的经典教程,涵盖了JavaScript语言的各个方面,包括基本语法、数据类型、函数、对象、DOM操作、BOM处理、错误处理、事件处理等核心主题。这本书的中英文双语版本为...

    JavaScript权威指南(第六版) 清晰-完整

    JavaScript权威指南第六版是一本由David Flanagan所著的编程书籍,旨在为读者提供关于JavaScript语言的全面而深入的指南。该书涵盖了JavaScript语言的核心概念、客户端JavaScript应用、以及服务器端JavaScript编程等...

    JavaScript权威指南第五版源码

    JavaScript权威指南第五版的源码是一份极其宝贵的资源,它为深入理解和实践JavaScript语言提供了丰富的素材。这本书由David Flanagan撰写,是JavaScript开发者必备的经典参考书籍之一。源码的提供使得读者可以更直观...

    JavaScript权威指南(第5版)

    《JavaScript权威指南(第5版)》是一本深入解析JavaScript编程语言的专业书籍,由David Flanagan撰写,被誉为JavaScript程序员的必备参考。这本书详尽地介绍了JavaScript的语法、特性以及最佳实践,旨在帮助读者...

    Javascript 权威指南 第五版

    《JavaScript 权威指南》第五版是一本深受程序员喜爱的经典著作,由David Flanagan撰写,是深入理解JavaScript语言的重要参考资料。这本书旨在为开发者提供全面、准确且深入的JavaScript知识,帮助他们有效地利用这...

    JavaScript权威指南(第6版),中文+英文+源码

    《JavaScript权威指南(第6版)》是David Flanagan撰写的一本深度解析JavaScript语言的经典著作。这本书详尽地涵盖了JavaScript的各个方面,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。书中不仅包含中文...

    第五版javascript权威指南

    《第五版JavaScript权威指南》作为一本深入解析JavaScript的专著,为开发者提供了全面、深入且权威的指导。书中不仅涵盖了语言的基础概念,还涉及了高级特性和最佳实践,旨在帮助读者成为JavaScript的专家。 1. **...

    JavaScript权威指南(第5版)中文版.pdf

    ### JavaScript权威指南(第5版)中文版.pdf #### 知识点概览 《JavaScript权威指南》(第5版)是一本深入介绍JavaScript语言及其应用的经典著作,被视为JavaScript领域的巅峰之作。本书不仅适合初学者入门,也适用...

    http权威指南和JavaScript权威指南6

    《HTTP权威指南》与《JavaScript权威指南》是前端开发者不可或缺的两本经典著作。它们分别深入探讨了网络通信的核心——HTTP协议,以及浏览器中的主要编程语言JavaScript。这两本书籍覆盖了从基础知识到高级技巧,...

    javascript权威指南,pdf中文版

    《JavaScript权威指南》是一本深入探讨JavaScript编程语言的权威著作,中文版的出现使得更多中国开发者能够无障碍地学习这门重要的编程语言。JavaScript,通常简称为JS,是互联网上最广泛使用的客户端脚本语言,它在...

Global site tag (gtag.js) - Google Analytics