李权20200828

闭包的三个概念

*1.函数嵌套函数*

*2.内部函数引用外部函数的变量*

*3.外部函数被引用的变量不会被销毁,而是会被隐藏下来*

闭包的优点:

1.闭包让外部访问局部变量成为了可能

2.可以避免使用全局变量,造成全局污染

3.局部变量常驻内存中

闭包的缺点:

1.占用过多的内存,造成内存泄漏

理解闭包的一些列子

请大家在看这些列子的时候,一定要想想闭包的概念

function f1() {    var count = 1;    return function () {        var i = 1;        console.log(++count,++i);    }}var a = f1();a()  //2,2a() //3,2a() //4,2/*造成上面的原因:因为内部函数调用了外部函数的变量 count  所以根据闭包的第三个概念,count不会被销毁,会一直保存下来所以他的值一直递增,而内部函数本身是一个普通函数,它内部的变量的生命周期是函数结束时被销毁 */

*2.这下面列子是一个逐渐变化的过程*

var count = 0;function  show() {    return ++count;}console.log(show())  // 1console.log(show())  // 2console.log(show()) // 3/** 这是因为上面的变量是一个全局变量,程序结束时被销毁,所以会依次递增

标签

评论

this is is footer