闭包的概念:子函数可以调用父函数的局部变量,如果子函数得不到释放,整个作用域链都会保留。处理不好会占内存。
开始我主要是对一道面试题不理解:
function say667() {
var num = 666;
var sayAlert = function() { alert(num);}
num++;
return sayAlert;
}
var sayNumba = say667();
sayNumba();
分析预解析
var seyNumba;
sayNuba=say667();
function say667(){
var num,sayAlert;
num=666;
sayAlert=function() { alert(num);}
num++;
return function(){alert(num);}
};
sayNumba=function(){alert(num);}
sayNumba();
如果funtion a里面包含function b;a return b;在a的外面,c调用a,就相当于c调用b;,b在被调用,所以a内的东西得不到释放;
当执行到var sayNumba=say();这句话的时候,say667执行一一遍,num++了,并且将sayAlert赋值给了sayNumba;所以调用sayNumba的时候弹出667了。