对闭包的理解
1.其实之前我对闭包一直存在误解,一直以为是从另一个函数去拿到这个函数的值 误解
2.今天在看原生 又看到了闭包 对他重新做了理解
1.希望变量长期驻扎在内存当中(一般函数执行完毕,变量和参数会被销毁)
2.避免全局变量的污染
function aaa() {
var a = 1;
a++;
alert(a)
}
aaa(); // 2
aaa(); // 2
aaa(); // 2
上面的函数不管执行几次,弹出的都是2,如果我们想弹出2/3/4 这样的结果呢?就需要用到闭包
函数嵌套函数,内部函数可以引用外部函数的参数和变量
function aaa() {
var a = 5;
function bbb() {
alert(a)
}
return bbb
}
var c = aaa();
c();
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
``
闭包就是从外部的函数想要拿到内部函数的值
好处就是不会被垃圾回收机制所回收
当内部函数 在定义它的作用域 的外部 被引用时,就创建了该内部函数的闭包 ,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被 释放,因为闭包需要它们.