闭包是JavaScript的一大难点, 也是它的特色. 很多高级的应用需要依靠闭包来实现.
1. 变量作用域
要理解闭包, 首先要理解JavaScript的特殊的变量作用域.
变量的作用域无非就两种: 全局变量和局部变量.
JavaScript语言的特别之外在于: 函数内部可以直接读取全局变量, 但是在函数外部无法读取函数内部的局部变量
2.闭包的概念
闭包就是能够读取其他函数内部变量的函数
由于在JavaScript中, 只有函数内部的子函数才能读到局部变量, 所以说, 闭包可以简单理解成"定义在一个函数内部的函数".
所以, 在本质上, 闭包就是将函数内部和函数外部连接起来的桥梁.
3. 闭包的用途
闭包可以用在很多地方, 它的最大用处有两个: 一个是读取函数内部的局部变量, 另一个就是让这些变量的值始终内存中, 不会被自动清除掉.
4. 使用闭包的注意点
- 由于闭包会使得函数中的变量都被保存在内存中, 内存消耗很大, 所以不能滥用闭包, 否则会造成网页的性能问题, 在IE中可能导致内存泄露. 解决方法是, 在退出函数之前, 将不再使用的局部变量全部清除.
- 闭包会在父函数外部, 改变父函数内部变量的值, 所以, 如果你把父函数当作对象(object)使用, 把闭包当作它的公用方法, 把内部变量当成它的私有属性, 这时一定要小心, 不要随意改变父函数内部的值.
网友评论