js的变量以作用域划分为两种:全局变量、局部变量。在函数外声明的变量为全局变量,函数内部可以直接调用全局变量。在函数内部声明变量一定要用var 命令,否则就是在函数内部声明了一个全局变量了。
闭包的产生是为了从外部读取函数的局部变量,即在函数内部再定义一个函数f2,把f2作为返回值,在上层函数中返回就可以使上层函数读取其他函数的局部变量了
function f1(){
n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
闭包(closure)就是能够读取其他函数内部变量的函数。也可以说是定义在一个函数内部的函数,本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
闭包的用途:1. 可以读取函数内部的变量
2. 让这些变量的值始终保持在内存中,因为f2依赖于f1的存在而存在。
缺点:函数中的变量都被保存在内存中,使内存消耗很大,所以不能滥用闭包,不然网页性能会降低,在IE中也可能会内存泄露,所以在退出函数之前,将不再使用的局部变量全部删除。
时间: 2024-11-14 03:37:10