闭包(三点)定义闭包是函数的嵌套函数,内部函数是闭包。
特性正常性函数的执行完成内部变量被废弃
闭包内部函数不执行,外部函数变量不丢弃。
//闭包function outerfun () { let a=10; //特性已执行的销毁function innerFun () ) /内部函数console.log(a ) ) a; }返回inner fun; } let fun=outerfun (; /*outerfun作为返回值赋值给fun后执行未完成,因此为10,调用内部函数时不会丢弃外部函数的let为10*/fun (; //10应用(闭包可以封装部分代码)//应用//未封装let aa=10; //全局变量let bb=20; 功能添加() { return aa bb; } function sub (() { return aa - bb; } let res1=add (; let res2=sub (; 控制台. log (res1,res2 ); //30.-10闭包封装
//闭包通过闭包实现模块化的功能letmodouble=(function )//匿名函数let aa=10; //局部变量let bb=20; 功能添加() { return aa bb; } function sub (() { return aa - bb; } return { add: add,sub: sub,} ()//用括号声明后,直接调用let ress=modouble.add )。 let resss=modouble.sub (; 控制台. log (RESS,resss ); //30,-10