<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> let a = 2; function biBao() { console.log(a) } function test() { let a = 1; return function () { console.log(a) } } biBao(); test()(); </script> </body> </html>
1、解释
函数执行时,会形成一个私有上下文(词法作用域),执行完之后,上下文中使用的对象,如果不在该上下文中定义,那么当前上下文就不能被释放,导致闭包
2、作用
防止全局变量污染
访问函数内部变量
3、实例
避免变量污染
let n = 2; function test() { let n = 3; return function () { n++; console.log(n) } } let biBaoFunc = test(); biBaoFunc(); biBaoFunc(); biBaoFunc();
4、缺点
占内存
可能会内存泄漏