JavaScript闭包理解

Posted by Daisydan on October 24, 2015

闭包这个问题一直以来比较生涩,今天一个同事给了他的理解:闭包就是防止全局变量污染。 然后我专门上网查了下,总结了以下几点

闭包定义

闭包通俗点说就是能够读取其他函数内部变量的函数(是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量

闭包的好处

1.希望一个变量长期驻扎在内存中 2.避免全局变量的污染 3.私有成员的存在

理解最深的就是避免全局变量的污染,通俗点说就是相同的变量互不干扰。比如我们定义了一个全局变量,在同一个函数里面又定义了多个和全局相同的变量,通常这种情况会导致全局变量会出错,但是引用闭包后就不会出现这种情况。