闭包

闭包的概念:子函数可以调用父函数的局部变量,如果子函数得不到释放,整个作用域链都会保留。处理不好会占内存。

开始我主要是对一道面试题不理解:

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了。
posted @ 2016-08-26 01:05  lingling144  阅读(121)  评论(0编辑  收藏  举报