javascript深入理解闭包函数

2018-01-30  本文已影响0人  Aaron阿槑与阿瓜

javaScript中,闭包(closure)是一个非常重要的概念;

闭包是指一个函数可以访问另一个函数作用域中的变量,创建闭包最常见的方式就是一个函数中嵌套另一个函数,然后通过另一个函数访问外层函数作用域中变量;

一.闭包的特点:

1.函数中嵌套一个函数

2.嵌套的函数可以使用外层函数作用域中的变量和参数

3.参数和变量不会被垃圾回收机制回收

通常情况下,函数中声明的局部变量,会在函数执行完毕后被销毁.例如

function aa(){
    var b=1;
    alert(b);
}
aa();

当函数执行完毕后,函数内部的变量就不会在占用内存(下次调用aa()时,会在次创建变量),但闭包就可以使局部变量驻留在内存中,这样就不用使用全局变量,避免出现全局污染的情况.

一般形式的闭包函数;

var foo=function func(){
    var num=0;
    return function(){
        console.log(num++);
    }
}
foo();//0
foo();//1
foo();//2
f=null;//垃圾回收

num在变量执行完毕之后并没有被销毁,这是因为全局变量(在程序执行完毕后才会被销毁)foo存储func返回的匿名函数,而此返回的匿名函数会用到变量num.代码实现了局部变量的累加,又因为num是局部变量,所以不会对函数作用域外的同名变量产生污染.

二.使用闭包的优点;

1.局部变量可以长期驻扎在内存中

2.避免全局变量的污染

3.私有成员的存在

闭包现象的理解:它描述了函数执行完毕内存释放后,局部变量依然驻留在内存中一个现象;

上一篇 下一篇

猜你喜欢

热点阅读