JavaScript闭包的详解(附例题讲解)

it2024-04-03  50

什么是闭包?

密闭的容器,类似于set、map容器,用于存储数据

闭包是一个对象,存放数据的格式为: key :value

形成的条件

函数的嵌套内部函数调用外部函数的局部变量

闭包的优点

延长外部函数局部变量的的声明周期

闭包的缺点

容易造成内存泄漏

注意点

合理使用闭包使用完闭包及时清除(销毁) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>闭包</title> </head> <body> <script> function fun(n,o){ console.log(o); return { fun:function(m){ return fun(m,n); } } } var a = fun(0); a.fun(1); a.fun(2); a.fun(3); /* var a = fun(0); o未定义输出undefined a.fun(1); a.fun(1) => fun(1,0) 输出 0 a.fun(2); a.fun(2) => fun(2,0) 输出 0 a.fun(3); a.fun(3) => fun(3,0) 输出 0 */ var b = fun(0).fun(1).fun(2).fun(3) /* var b = fun(0).fun(1).fun(2).fun(3) 第一次调用fun(0),参数o未定义输出undefined fun(0).fun(1) => var a = fun(0) a.fun(1) 输出 0 fun(0).fun(1).fun(2) => var a = fun(1,0) a.fun(2) 输出 1 fun(0).fun(1).fun(2).fun(3) => var a = fun(2,1) a.fun(3) 输出 2 */ var c = fun(0).fun(1) c.fun(2) c.fun(3) /* var c = fun(0).fun(1) fun(0).fun(1) => var a = fun(0) a.fun(1) 输出 0 c.fun(2) c.fun(2) =>fun(2,1) 输出 1 c.fun(3) c.fun(3) =>fun(3,1) 输出 1 */ </script> </body> </html>

最新回复(0)