JS闭包
JS闭包 了解什么是闭包 先来一段代码,根据代码分析能更容易理解: function a ( ) { var num = '我是函数a的变量num' ; return function b ( ) { console . log ( num ) ; } } var res = a ( ) ; res ( ) ; 从函数a上看 :有一个函数a,在函数a的内部,返回了一个函数b,而函数是一个复杂数据类型,即在一个函数内部,返回了一个复杂数据类型。 从函数b上看 :函数b中,访问着函数a的里面的变量(数据),也就是在一个被返回的函数里,有一个外部作用域的变量。 从函数a外部看 :有一个变量res,引用了函数a,但是由于函数a内部存在有一个返回值函数b,则,这个变量,相当于在引用了函数b(调用函数a,执行结果就是函数b)。 代码上的分析: function a ( ) { //这个 num 变量就是函数 a 的变量 var num = '我是函数a的变量num' ; return function b ( ) { //这里在后台输出的num,是函数a的变量 console . log ( num ) ; } } //res 所接收到的是 a 函数执行以后的返回值 //而这个返回值就是函数 a 内部返回的一个复杂数据类型(函数b) //这个时候,触发了一个不会销毁的函数空间 /