js 闭包 详解

  • A+
所属分类:Web前端
摘要

使用闭包封装


闭包(三点)

定义

闭包就是函数嵌套函数, 内部函数就是闭包. 

特性

正常情况 函数执行完成内部变量会销毁 而闭包 内部函数没有执行完成,外部函数变量不会被销毁。 
//闭包  function outerfun() {         let a = 10;//特性执行完销毁         function innerFun() {//内部函数             console.log(a);         }         return innerFun;     }     let fun = outerfun();/*outerfun作为返回值赋值给fun 没有执行完成     所以有10,如果内部函数被调用那么外部函数不会被销毁 let 有 10*/       fun();//10 

应用(闭包可以封装一段代码)

    //应用      //未封装     let aa = 10;//全局变量     let bb = 20;     function add() {         return aa + bb;     }     function sub() {         return aa - bb;     }     let res1 = add();     let res2 = sub();     console.log(res1, res2);//30.-10 

使用闭包封装

 //闭包封装   利用闭包实现模块化的功能     let modouble = (function () {//匿名函数         let aa = 10;//局部变量         let bb = 20;         function add() {             return aa + bb;         }         function sub() {             return aa - bb;         }         return {             add: add,             sub: sub,         }     })()//小括号 声明后直接调用     let ress = modouble.add();     let resss = modouble.sub();     console.log(ress, resss);//30,-10