JavaScript执行值会产生做用域,做用域是执行环境。闭包
window对象执行会产生全局做用域,函数
每一个函数执行的时候会产生这个函数的做用域,并将其放在函数做用域链的顶端,查找变量是由顶端往下查找。spa
函数执行完毕会销毁创造的做用域链,经过删除引用的方式,函数的做用域实际删除是经过垃圾回收删除的,可是通常状况下函数执行完毕,做用域自己也会被销毁,但若是是闭包,即函数内部返回了内部的一个函数,这个函数会引用做用域。code
function a(){ var num = 10; function b(){ num++; console.log(num) } console.log(num) return b; } var f1 = a(); //10 var f2 = a(); //10 f1(); //11 f2(); //11 a(); //10