,,JavaScript闭包详解

,,JavaScript闭包详解

一分钟了解JavaScript闭包,有很多关于JavaScript闭包的介绍。本文带你快速了解什么是JavaScript闭包,感兴趣的朋友可以参考一下。

:

目录

1.什么是终结?1.2闭包的记忆:函数可以记住定义它们的环境。1.3闭包现象:JS中每创建一个函数就创建一个闭包。2.闭包的功能:内存,模拟私有变量。2.模拟私有变量(安全变量)。3.life(立即调用的函数表达式):3.1 IIFE动作。1-给变量赋值。3.2生活行动。

1.什么是闭包?

函数本身和声明函数的环境状态的组合。

1.2 闭包的记忆性:函数能够记住定义时所处的环境

1.3 闭包现象:JS中每次创建函数时都会创建闭包

2.闭包的功能:记忆性、模拟私有变量

2.1 记忆性

举例:

!文档类型html

html lang='en '

meta charset='UTF-8 '

meta http-equiv=' X-UA-Compatible ' content=' IE=edge '

meta name=' viewport ' content=' width=device-width,initial-scale=1.0 '

标题文档/标题

/头

身体

脚本

函数createCheckTemp(standardTemp){

函数checkTemp(n){

if(n=标准温度){

alert(‘你的体温正常’);

}否则{

alert(‘你体温高’);

}

}

返回checkTemp

}

var check temp _ A=createCheckTemp(37.1);

var check temp _ B=createCheckTemp(37.3);

check temp _ A(37.2);

check temp _ A(37.0);

check temp _ B(37.2);

check temp _ B(37.0);

/脚本

/body

/html

细节:

1.关闭的记忆

2:函数返回checkTemp,这是一个函数名

3:定义var checkTemp_A和checkTemp_A得到函数名checkTemp而不是直接调用。

2.2 模拟私有变量(安全化变量)

闭包代码举例:

!文档类型html

html lang='en '

meta charset='UTF-8 '

meta http-equiv=' X-UA-Compatible ' content=' IE=edge '

meta name=' viewport ' content=' width=device-width,initial-scale=1.0 '

标题文档/标题

/头

身体

脚本

//封装一个函数,其函数是私有化变量。

fun(){

//定义一个局部变量a。

var a=0;

返回{

getA:函数(){

返回a;

},

add:function(){

a;

},

pow:function(){

a*=2;

}

}

}

var obj=fun();

//如果想在fun函数之外使用变量A,唯一的办法就是调动getA()方法

console . log(obj . geta());

//你希望变量A执行1次运算

obj . add();

obj . add();

obj . add();

console . log(obj . geta());

obj . pow();

console . log(obj . geta());

/脚本

/body

/html

其实可以理解为JavaScript无法像C和Java一样定义函数的类型,比如int sum()、int add()、int pow()等。所以需要利用闭包的特性:即函数内闭包的内存可以用来操作函数内的变量,然后返回封闭函数的名字进行内部数据操作。

3.IIFE(Immediately Invoked Function Expression,立即调用函数表达式):

JS特殊函数一旦被定义,就会被立即调用。

3.1 IIFE作用1-为变量赋值

举例:

对比两张图可以看出编程水平。简化代码。太美了。

3.2 IIFE作用2-将全局变量变为局部变量

在这种情况下,下面五个语句的结果都是5。因为JS中没有block作用域的概念(暂时这么理解),var i变成了全局变量,for循环后i=5。所以五个语句的结果都是5。

那么生命可以用来解决这个问题。其本质是利用函数的封闭性。

全局变量i传入IIFE函数中,全局变量 就 变成了局部变量,再利用JS函数的闭包特性,即可以实现图中arr[2]()的功能。

总结

本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: