闭包:允许使用内部函数(即函数定义和函数表达式位于另一个函数的函数体内),这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数,当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
优缺点:
优点:闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量。
缺点:会增大内存使用量,应用闭包场合主要是为了:设计私有的方法和变量。//声明一个闭包 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; }