JS中,什么是闭包?闭包有什么好处?
相信网上对闭包有很多的解释,毕竟这个玩意儿是仁者见仁智者见智,对于我来说,总结了2个特性:
1.函数嵌套函数,内部函数可以引用外部函数的参数和变量
function aaa() { var a = 5; function bbb() { alert(a) } return bbb } var c = aaa(); c();
2.参数和变量不会被垃圾回收机制所收回
JS中的垃圾回收机制 function test(){ var a = 1; alert(a) } test(); // 执行完这个函数,函数里面的a就不存在了,
下面来扯一下闭包的好处:
1.希望变量长期驻扎在内存当中(一般函数执行完毕,变量和参数会被销毁)
2.避免全局变量的污染
function aaa() { var a = 1; a++; alert(a) } aaa(); // 2 aaa(); // 2 aaa(); // 2 上面的函数不管执行几次,弹出的都是2,如果我们想弹出2/3/4 这样的结果呢?就需要用到闭包
function aaa() { var a = 1; return function(){ a++; alert(a) } } var bbb = aaa(); bbb(); // 2 bbb(); // 3 bbb(); // 4 // 函数表达式的写法 var aaa = (function () { var a = 1; return function () { a++; alert(a) } })() aaa() // 2 aaa() // 3 aaa() // 4