Javascript闭包使用的示例分析

Javascript闭包使用的示例分析
本文分析了Javascript闭包的概念和用法,供大家参考:

说到关闭,每个人都必须早点听说。下面,我有一个简单的了解。

说实话,实际上很少有手动编写闭包的场景,但是在项目中使用的第三方框架和组件或多或少都在闭包中使用。

因此,有必要了解闭包…

一、什么是壁橱

简而言之,它是一个函数,它读取其他函数的内部变量。

由于JS变量范围的特性,内部变量不能被外部访问,外部变量可以在内部找到。

两。使用场景

1。执行私人成员。

2。保护名称空间以避免对全局变量的污染。

三.缓存变量。

首先看一个封装的例子:

复制代码如下:var =函数(){()

作为内部和外部访问功能的变量范围

var;

返回{

getName:函数(){

返回的名称;

},

集名称:功能(新名称){

名称=新名称;

}

}

(});

console.log(人的名字); / /直接访问,结果如下:未定义

Console.log((人。getName)); / /结果:默认

console.log(person.setname(langjt ));

Console.log((人。getName)); / /结果:langjt

然后看看循环中常见的闭包来解决引用外部变量的问题。

复制代码代码如下:var阿里= document.getelementsbytagname(李的);

对于(var i = 0,len = ali.length;我< len;i++){

ALi {我}。onclick =函数(){

警告(i);无论哪个元素都是按鼠标单击的,这里显示的是弹出值,我和之后的打印值是一样的。

};

}

使用闭包后:

复制代码代码如下:var阿里= document.getelementsbytagname(李的);

对于(var i = 0,len = ali.length;我< len;i++){

ALi {我}。onclick =(功能(我){)

返回函数(){

警报(i);单击元素,将弹出相应的元素。

}

})(一);

}

三。注意事项

1。内存泄漏

由于闭包可以使函数中的变量存储在内存中,所以内存消耗很大,所以不能关闭闭包。否则,将导致网页性能问题。

例如:

复制代码代码如下:函数富(){

无功odiv = document.getelementbyid('j_div);

var id = odiv.id;

odiv.onclick =函数(){

/ /警报(odiv。ID);有一个圆形的参考,网页的odiv关闭后仍在记忆IE低版本。所以基本的类型,而不是对象,缓存尽可能多的。

警报(id);

};

odiv = null;

}

2。变量命名

如果内部函数的变量与外部函数的变量名相同,则内部函数不能指向外部函数同名的变量。

例如:

复制代码代码如下:函数富(数字){

返回函数(数字){

console.log(努姆);

}

}

新富(9);

(f);未定义的

事实上,上述用法,专业术语叫腐熟功能(讨好),是将函数接受多个参数接受一个参数(第一个参数的初始功能)功能,并返回剩余的参数和函数返回技术的结果,关闭自然也可以被缓存,如:

复制代码代码如下:var加法器=函数(数字){

返回函数(y){

返回值;

};

};

var =加法器(1);

var =加法器(- 1);

DEC现在是两个新函数,传入参数值(+ -)1

警报(公司(99));100

警报(DEC(101));100

警报(加法器(100)(2));102

警报(加法器(2)(100));102

例如,Ali Yu Bo的seajs源代码:

将代码复制如下:

util-lang.js最小语言增强* -

* /

函数类型(类型){

返回功能(obj){

返回{ }。tostring.call(obj)= {对象+类型+ }

}

}

VAR采用=类型(对象);

VaR isstring =类型(字符串);

希望本文能对大家的javascript程序设计有所帮助。

tag:闭包示例电脑软件Javascript

相关内容