闭包:允许使用内部函数(即函数定义和函数表达式位于另一个函数的函数体内),这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数,当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
优缺点:
优点:闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量。
缺点:会增大内存使用量,应用闭包场合主要是为了:设计私有的方法和变量。//声明一个闭包
function a1()
{
var week="Sunday";
function a2()
{
console.log('星期:'+week);
}
return a2;
}
var aa=a1();
//以上代码已经形成一个闭包
//a1执行后返回a2函数,函数对象对aa进行赋值(引用赋值)
//调用闭包函数aa,使其发生执行
//aa和a2是同一个function的两个不同名字,a2是局部变量,aa是全局变量
ff();//Sunday
//闭包使用规则:
//同一个闭包机制可以创建多个闭包函数出来,它们彼此没有联系,都是独立的,并且每个闭包可以保存自己的信息。
function a1(num){
//外部变量:变量、参数、函数
//var num=100;//num就是a1函数的形参,也是其局部变量
function a2(){//a2可以访问a1中的变量num
console.log("数字:"+num);//100
}
return a2;
}