闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的常见方式,就是在一个函数内部创建另一个函数,内部的函数即为闭包函数
如果内部函数使用外部函数的变量,在外部函数执行完成之前变量会有改变时,内部只能获取最后改变的值,无法获取定义时的值,就会产生闭包
解决方式一:不在函数内部定义函数,将函数定义在外面,在函数内部调用
解决方式二:为元素附加属性,用来存储变量
JS小白看看视频看看书简单的理解,还有好多东西没有理解,还有好多东西需要学习至于什么是闭包,我也不清楚,后续有更深的理解会继续更新
附简书前辈两篇文章
面试官问我:什么是JavaScript闭包,我该如何回答? →外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象,这就是闭包的重要概念。
《JavaScript高级编程》书中建议:由于闭包会携带包含它的函数的作用域,因为会比其他函数占用更多内容,过度使用闭包,会导致内存占用过多。