可查找文章:
js闭包的用途-CSDN博客
How do javascript closures work?
什么是闭包?
通俗来说,就是函数里面定义新函数,就是嵌套函数。
为什么会用到闭包?
我们知道作用域的对象访问只能向上,这样外部无法向内部访问
var foo1 = function () {
var local = 'local varial';
(function () {
console.log(local);
} ());
};
foo1();
//local varial
而下面的代码就会得到local未定义的异常。
var foo1 = function () {
(function () {
var local = 'local varial';
}());
console.log(local);
};
foo1();
image.png
而闭包就可以实现作用域访问内部作用域中变量。这得益于高阶函数的特性:函数可以作为参数或者返回值。
var foo = function () {
var bar = function () {
var local = 'local variable';
return function () {
return local;
};
};
var baz = bar();
console.log(baz());
}
//local variable
闭包的不足
一旦有变量引用这个中间函数,这个中间函数就不会释放,同时也会是原始的作用域不会得到释放,作用域中产生的内存占用也不会得到释放。除非不再引用,才会逐步释放。
网友评论