简单谈谈我对闭包的理解

189 阅读1分钟

第一次学习闭包时,我听到过一句话,闭包就是闭不上的包,我当时似懂非懂,为什么是闭不上的包呢?然后各种搜索,发现又有人说闭包就是函数嵌套函数,内部函数可以访问外部函数的变量,然后形成了闭包

看了阮一峰大大的早期学习日志,觉得由浅至深,从局部和全局变量讲到闭包原理,让我获益匪浅,所以我打算聊聊我对闭包的理解.

闭包,其实上面说的都对,但是或多或少是为了便于理解或者方便记忆,讲到了一部分并不完整,在我看来,闭包主要是为了在全局中访问局部变量,在函数内嵌套函数,利用js的链式查找机制,由子级函数查找父级函数内的变量,从而实现在全局访问局部变量,但是这样做会存在一个问题,函数在执行完毕不会被销毁,所以说会一直占用内存,无法触发浏览器的内存回收机制,这就是闭包的缺陷.

我能想到的闭包的应用场景就是不想用户之间能访问修改到某个数据的时候,就可以使用闭包来将数据写到函数中,让用户只能访问而不能修改.