复习:从零开始学前端:作用域、执行顺序 — 今天你学习了吗?(JS:Day10)
JS的内存回收机制:一个函数在开始执行的时候,会给其中定义的变量划分内存空间保存,以备后面的语句所用,等到函数执行完毕返回了,函数内部的变量就被认为是无用的了,对应的空间也就被回收了。下次再执行此函数的时候,所有的变量又回到了最初的状态,重新赋值使用。
变量声明周期:当一个变量的生命周期结束之后它所指向的内存就应该被释放。JS有两种变量,全局变量和在函数中产生的局部变量。局部变量的生命周期在函数执行过后九结束了,此时便可将它应用的内存释放(即垃圾回收),但全局变量声明周期会持续到浏览器关闭页面。
何为闭包?:就是函数可以访问其声明时所在作用域内的变量,根据这个特性可以在函数内返回一个函数,通过这个被返回的函数可以在函数外部访问函数内的变量;
形成闭包的条件?:1.函数嵌套函数(有作用域的嵌套);2.内部函数使用了外部函数的变量/参数;
闭包的作用是什么?:内部函数使用了外部函数的变量或参数会被永久的保存下来。
案例:
function fn() {
var a = 1;
return function () {
console.log(++a)
}
}
var fn2 = fn();
fn2();//2
fn2();//3
fn2();//4
var fn3 = fn();//如果说开辟了一个新的空间,那么将被重新地赋值;
fn3();//2
输出:

闭包优点:
闭包的缺点: