、、1、例子
/* 1、如何从函数外部读取局部变量 */function fn1(){var n = 999;return function(){n++;console.log(n)}}var result = fn1();/*result = function(){n++;console.log(n);}*/result();result();result();console.log(n)
不想让一个变量造成全局污染,同时需要其常驻内存就可以使用闭包
2、作为返回值的函数
会从函数定义的地方查找
function test(){var a = 1;return function(){console.log(a);}}const fn = test();const a = 2;fn();
3、函数作为参数
/* 函数作为参数 */function test(fn){var a = 1;fn(a);}var a = 20;function fn(){console.log(a);}//定义fn函数的时候,它会和它周边的状态捆绑在一起test(fn); //从函数执行的地方查找
闭包:一个函数和它的周边状态的引用捆绑在一起的组合
