当前位置:首页 > 日记 > 正文

javascript闭包(闭包)详细解决方案

javascript闭包(闭包)详细解决方案
以下是我的学习笔记,这对javascript初学者是有用的。

一、可变范围

要了解闭包,必须首先了解Javascript的特殊变量范围。

变量的范围无非是两种:全局变量和局部变量。

Javascript语言的特点是全局变量可以在函数中直接读取。
var = 999;

函数f1(){
警报(N);
}

f1(999);

另一方面,函数中的局部变量不能从函数之外的函数中读取。
函数f1(){
var = 999;
}

警报(n);错误

这里的一个地方需要知道,当函数在变量中声明时,必须使用var命令。如果不使用它,实际上会声明一个全局变量!

函数f1(){
n=999;
}

(F1);

警报(n);999

两。如何从外部读取本地变量

由于种种原因,我们有时需要在函数中得到局部变量。然而,以前已经说过,在正常情况下,这是不能做到的,只能通过变量的方法才能实现。

这是函数的内部,然后定义一个函数。

函数f1(){

var = 999;

函数F2(){
警报(n);999
}

}

在上面的代码中,函数F2是包含在函数f1,当所有的局部变量在F1到F2可见。但反过来,F2的局部变量可见F1不是。这是Javascript语言的链范围结构,其中的子对象看在水平和水平的所有父对象的变量。因此,父对象的所有变量都可见到子对象,反之亦然。

由于F2可以读取F1中的局部变量,所以如果使用F2作为返回值,那么我们是否不能在F1之外读取它的内部变量呢!

函数f1(){

var = 999;

函数F2(){
警报(N);
}

F2返回;

}

var结果= f1();

结果(999);

三,闭包概念

代码最后一部分中的F2函数是闭包。

在各种专业文献中,闭包的定义非常抽象,很难理解,我的理解是闭包是可以读取其他函数内部变量的函数。

因为在Javascript语言,只有局部功能可以通过子函数中的阅读,我们可以简单的理解为关闭功能定义在一个函数。

因此,本质上,闭包是连接函数内部到函数外部的一个桥。

四,使用闭包

闭包可以在很多地方使用,它有两个应用程序:一个是读取函数内部变量的程序,另一个是保持变量在内存中的值。

你怎么理解这个句子请看下面的代码。

函数f1(){

var = 999;

纳德=功能(N = 1){ }

函数F2(){
警报(N);
}

返回F2;

}

var结果= f1();

结果(999);

NAdd();

结果(1000);

在这个代码中,结果实际上是一个封闭的包F2函数,它总共运行两次,第一次是999次,第二次是1000次,这证明函数f1中的局部变量n被保存在内存中,在f1调用后不会自动清除。

为什么会这样原因是F1是F2的父函数,F2被分配给一个全局变量,这导致F2总是在内存中。F2的存在依赖于F1,所以F1总是处于内存中,在调用完成后,垃圾回收机制(垃圾回收)将无法恢复它。

这段代码的另一个值得注意的方面是纳德=功能(N = 1){ }。首先,纳德关键词不使用前纳德,所以纳德是一个全局变量,而不是局部变量。其次,纳德的值是一个匿名函数(匿名函数),和匿名函数本身也是一个闭包,那么纳德相当于一个二传手,可对内的局部变量在功能操作。

五。使用封闭的注意点

1)因为闭包可以使函数中的变量存储在内存中,并且内存消耗很大,所以不能滥用。否则,它会导致网页的性能问题,并可能导致IE.内存泄漏。解决方案是删除在功能退出之前没有使用的所有本地变量。

2)关闭将在母函数的外部变化的母函数内部的变量的值。所以,如果你把父亲作为一个函数对象(客体),关闭作为它的公共方法(公共法)、内部变量作为它的私有属性(私人价值),那么我们必须小心,不要改变里面的母函数变量的值。

六、思考问题

如果您能够理解下面两段代码的运行结果,您应该了解闭包的操作机制。

代码片段1

窗口;

var对象{ { {
名称:我的对象

GetNameFunc:函数(){
返回函数(){
返回this.name;
};

}

};

警报(object.getnamefunc()());

代码段两

窗口;

var对象{ { {
名称:我的对象

GetNameFunc:函数(){
var =;
返回函数(){
返回that.name;
};

}

};

警报(object.getnamefunc()());

以上是本文的全部内容,希望大家能喜欢。

相关文章

PS为雷神加东北花海角详细教程

PS为雷神加东北花海角详细教程

详细教程,东北,花海,雷神,电脑软件,本教程实际上是关于如何在衣服上添加图案的过程。首先,首先定义所需的图案,然后提取衣服的主要选区;创建新的图层,用定义良好的图案填充选区,并获得初步效果;后期调整颜色。 本教程实际上是关于如何在衣服上添…

CDRX4设计杂志排版简单实例教程

CDRX4设计杂志排版简单实例教程

实例教程,简单,杂志,电脑软件,本教程是为CDR X4的简要介绍,这是设计杂志版面的好方法。这个教程很好。这对初学者来说是很好的学习。建议喜欢的朋友可以按照教程学习。 本教程是实用,教CDR爱好者用CDR X4杂志出版;事实上我也喜欢阅读本教程,很…

用Javascript获取DOM元素的11种方法综述

用Javascript获取DOM元素的11种方法综述

综述,元素,种方法,电脑软件,Javascript,在Web应用程序中,特别是在web2.0程序的开发中,经常会在页面中获取一个元素,然后更新元素的样式、内容等。如何使要更新的元素是第一个需要解决的问题。这里是一个简短的摘要。以下的方法是由IE7和firefo…

如何设置QQ空间黑名单QQ技术

如何设置QQ空间黑名单QQ技术

黑名单,空间,如何设置,技术,电脑软件,QQ空间(Qzone)是腾讯公司开发的个人空间2005。它有博客的功能,已被许多人自世界。在QQ空间里,你可以写日志,上传个人图片的用户,听音乐,写心情,让自己以各种不同的方式。此外,用户还可以设置空间的背景、小衣架…

PS教你红枣红枣隧道的效果

PS教你红枣红枣隧道的效果

红枣,教你,隧道,效果,电脑软件,本文主要介绍PS教学法在红枣红隧道施工中的作用。这个教程很简单,你喜欢的朋友可以一起学习。 步骤1:新建一个画布并填充黑色。 第二步:滤镜-镜头-光晕。 第三步:过滤-风格化-突出,然后按Ctrl + F两或三次。 第四…

PS辐射发光文字效果教程

PS辐射发光文字效果教程

教程,辐射,文字效果,电脑软件,PS,本ps灯光文字教程是一个专门为大家安排的小编辑器,希望能对大家有所帮助! 1,设置一个350×250文件,黑色背景。 2,用文字工具书写,字体的颜色是白色的。 3,滤波器-失真极为标准,(设置为极坐标到平面)。 4,顺时针90度。 …

教你如何用PS滤镜制作热太阳

教你如何用PS滤镜制作热太阳

滤镜,教你,如何用,电脑软件,PS,今天,我们教你怎样用PS做热太阳法。教程中生成的太阳非常令人震惊。非常相似。请向你的朋友推荐它。 在本教程中,我们将学习如何用ps滤镜制作热太阳方法。本教程比较简单,但效果非常壮观。就像你的朋友一样,让我…

设置当前分钟数的使用()在Javascript处理时

设置当前分钟数的使用()在Javascript处理时

方法,设置,时间,电脑软件,Javascript,Javascript date.setminutes()方法是指定日期根据本地时间设置 语法 Date.setMinutes(minutesvalue {,secondsvalue {,msvalue } }) 注意:内外括号和数据都是可选的。 下面是参数的详细信息: minutesvalue:0和59之…

excel表格库:如何清除单元格内容的e

excel表格库:如何清除单元格内容的e

清除,单元格,表格,基础,内容,Excel如何清除单元格内容首先选择单元格,然后按下删除键,只删除单元格内容,其格式和注释仍然保留。 完全删除单元格,可用以下方法:选定要删除的单元格或单元格区域,单击编辑;具有;间隙;命令,然后显示菜单();间隙;,命令,当然你…

如何在WPS表中制作斜线头WPS表教程

如何在WPS表中制作斜线头WPS表教程

教程,如何在,电脑软件,WPS,今天,我们在这里向大家推荐一些WPS表格,做一些相关的文章,欢迎大家看看参考资料,想多了解一些。欢迎光临。 一个斜线头,很难让很多学生死掉。其实很简单,在这篇文章中,office office助手的小图形文字详细说明了在WPS表中…

一个在PS图象处理软件合成枪的女战

一个在PS图象处理软件合成枪的女战

图象,处理软件,女战士,电脑软件,PS,本教程介绍在PS图象处理软件合成的女性朋友。它很有创意。它很有创意。这不是很难。它只是使用ps的几个函数,建议大家一起学习。 本教程是在战争中主要使用女战士PS图象处理软件合成,总想做一个战争题材的…

PPT三三维饼图制作教程PPT2010制作

PPT三三维饼图制作教程PPT2010制作

饼图,制作教程,电脑软件,PPT,欢迎大家来。在PPT图表美化教程七中:为饼图添加视觉效果,我们介绍了一些简单的方法来添加视觉效果饼图。本文主要讨论一个三维饼图(三维饼图),可以经常看到在PPT。 在许多关于数据图表设计和制作的建议中,三维图表基…