js函数闭包的作用

2025-05-14 23:48:21

1、1.函数闭包的作用1). 让我们在全局作用域中访问局部变量2). 让局部变量一直驻留在计算机的内存中运行结果:报错,变量i未定义,为什么会出现以上情况:3). 作用域不允许4).受到垃圾回收机制的影响,当函数执行完毕后,其内部的变量和函数要被回收掉

js函数闭包的作用

2、2.Javascript垃圾回收机制在垃圾回收机制中一共存在两种算法:① 标记算法② 引用计数器算法以引用计数器算法为例:

js函数闭包的作用

3、3.通过骒貉缭塄原理图的理解:当程序运行时,如果某块内存区域,如display函数内部的var i = 10;要进行使用,所以会自动在内存中开辟一块内存空间,初始化计数器为0,由于display需要使吹涡皋陕用到这个变量i,所以引用计数器进行+1操作,当display函数执行完毕后,由于这块区域不需要引用了,所以进行-1操作,重置为0,由于计数器为0,系统会自动认为这块区域已经没用了,自动回收,所以当我们在全局作用域中再次调用变量i,其已经被回收了!

js函数闭包的作用

4、4.模拟闭包特性

js函数闭包的作用

5、5.以上程序可以正常弹出“hello”字符串?虽然在Javascript中,函数执行完毕后,其内部的局部变量和函数都要被内存所回收,但是由于其把局部函数fn的首哪纳紧萄地址作为display函数的返回值并把其赋值给全局变量func,这就导致了存在了一种引用关系,全局变量中有一个变量引用了fn函数的首地址,用引用计数器的原则可知,其计数器会自动进行+1操作

js函数闭包的作用

6、6.使用闭包访问局部变量当代码执行到第21行时,系统执行display函数并把执行后的结果(局部函数fn在内存中的首地址)赋值给func这个全局变量,这样就会导致局部变量fn函数的引用计数器进行+1操作。又由于fn函数引用了局部变量i,所以根据作用域链的原则,系统会自动寻找var的声明语句,找到上级作用域var i=10则直接使用。然后继续向下执行到第23行代码,调用func()就相当于找到fn函数在内存中的首地址并执行,由于受到作用域链的影响会自动弹出局部变量i。我们把fn函数就称之为“闭包函数”。

js函数闭包的作用

7、7.让局部变量一直驻留在计算机的内存中

js函数闭包的作用

8、8.函数闭包应用:形成独立的作用域,不受其他因素的影响

js函数闭包的作用
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢